如何检出一个远程Git分支?
如何检出一个远程Git分支?
有人用git push origin test
推送了一个名为test
的分支到共享仓库。我可以用git branch -r
看到该分支。如何检出远程的test
分支?我尝试过:
git checkout test
,没有任何效果git checkout origin/test
显示*(无分支)
admin 更改状态以发布 2023年5月23日
答案根据是否配置了一个远程仓库或多个远程仓库而分为两部分。原因是在单个远程仓库的情况下,某些命令的操作可以被简化,因为存在较少的歧义。
针对Git 2.23进行更新:有关旧版本,请参见结尾处的部分。
使用一个远程仓库
在两种情况下,首先要从远程仓库获取数据,以确保您下载了所有最新的更改。
$ git fetch
这将为你获取所有远程分支。您可以查看可用于检出的分支:
$ git branch -v -a ... remotes/origin/test
以 remotes/*
开头的分支可以被视为远程分支的只读副本。要在分支上工作,您需要从它创建一个本地分支。这是通过给 Git 命令 switch
(自Git 2.23起)赋予远程分支的名称 (减去远程名称)来完成的:
$ git switch test
在这种情况下,Git在猜测(可以使用--no-guess
禁用)您是否正在尝试检出和跟踪具有相同名称的远程分支。
使用多个远程
在存在多个远程仓库的情况下,必须显式命名远程仓库。
与之前一样,首先获取最新的远程更改:
$ git fetch origin
这将为您获取所有远程分支。您可以使用以下方式查看可用于检出的分支:
$ git branch -v -a
有了远程分支,您现在需要使用 -c
检出您感兴趣的分支以创建一个新的本地分支:
$ git switch -c test origin/test
关于使用git switch
的更多信息:
$ man git-switch
我还为您创建了下面的图像来分享差异,看看如何使用fetch,以及它与pull的区别:
Git 2.23之前
git switch
是在Git 2.23中添加的,在此之前,git checkout
用于切换分支。
要使用单个远程仓库进行checkout:
git checkout test
如果有多个远程仓库配置,则变得有点冗长。
git checkout -b test/test