git - 如何 checkout 远程 Git 分支?

标签 git git-checkout remote-branch

有人使用 git push origin test 将名为 test 的分支推送到共享存储库。我可以使用 git branch -r 查看分支。如何检查远程 test 分支?我试过:

  • git checkout test,什么也不做
  • git checkout origin/test 给出 *(无分支)

最佳答案

根据是否配置了一个或多个远程存储库,答案已被拆分。这样做的原因是对于单个远程案例,一些命令可以简化,因为歧义较少。

针对 Git 2.23 进行了更新:对于旧版本,请参阅末尾的部分。

用一个 Remote

在这两种情况下,首先从远程存储库获取以确保您已下载所有最新更改。

$ git fetch

这将为您获取所有远程分支。您可以通过以下方式查看可用于 checkout 的分支机构:

$ git branch -v -a

...
remotes/origin/test

remotes/* 开头的分支可以被认为是远程分支的只读副本。要在分支上工作,您需要从它创建一个本地分支。这是通过 Git 命令 switch(自 Git 2.23 起)通过为其指定远程分支的名称(减去远程名称)来完成的:

$ git switch test

在这种情况下,Git 正在猜测(可以使用 --no-guess 禁用)您正在尝试 checkout 并跟踪具有相同名称的远程分支。

使用多个 Remote

在存在多个远程仓库的情况下,需要显式命名远程仓库。

和以前一样,首先获取最新的远程更改:

$ git fetch origin

这将为您获取所有远程分支。您可以通过以下方式查看可用于 checkout 的分支机构:

$ git branch -v -a

有了远程分支,您现在需要使用 -c 检查您感兴趣的分支以创建一个新的本地分支:

$ git switch -c test origin/test

有关使用 git switch 的更多信息:

$ man git-switch

我还创建了下面的图像,供您分享不同之处,看看如何获​​取作品,以及 pull 作品有何不同:

enter image description here

Git 2.23 之前

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

仅使用一个远程存储库 checkout :

git checkout test

如果配置了多个远程仓库,它会变得有点长

git checkout -b test <name of remote>/test

关于git - 如何 checkout 远程 Git 分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1783405/

相关文章:

git - 只重置一个分支

Git 跟踪分支

git - Bitbucket 不显示所有分支

git - "not something we can merge"是怎么产生的?

git - 如何使用git更轻松地 merge 代码和解决冲突?

git - 如何永久删除 Github 标签?

git - 为什么我得到 "git status --porcelain failed"?

check out 其他分支时的 Git fetch/rebase master 分支

git - 从 Github checkout 分支,无需克隆整个仓库,也无需 Git

git - 将本地 git fork 的 repo 分支与远程原始分支的更改同步