如何检出一个远程Git分支?

18 浏览
0 Comments

如何检出一个远程Git分支?

有人用git push origin test推送了一个名为test的分支到共享仓库。我可以用git branch -r看到该分支。如何检出远程的test分支?我尝试过:

  • git checkout test,没有任何效果
  • git checkout origin/test显示*(无分支)
admin 更改状态以发布 2023年5月23日
0
0 Comments

答案根据是否配置了一个远程仓库或多个远程仓库而分为两部分。原因是在单个远程仓库的情况下,某些命令的操作可以被简化,因为存在较少的歧义。

针对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的区别:

enter image description here

Git 2.23之前

git switch是在Git 2.23中添加的,在此之前,git checkout用于切换分支。

要使用单个远程仓库进行checkout:

git checkout test

如果有多个远程仓库配置,则变得有点冗长。

git checkout -b test /test

0