有人推了一个叫做的分支 test
同 git push origin test
到共享存储库。我可以看到分支 git branch -r
。
现在我正试着看看遥控器 test
科。
我试过了:
git checkout test
什么也没做git checkout origin/test
给* (no branch)
。这令人困惑。我怎么能在“没有分支”?
如何查看远程Git分支?
有人推了一个叫做的分支 test
同 git push origin test
到共享存储库。我可以看到分支 git branch -r
。
现在我正试着看看遥控器 test
科。
我试过了:
git checkout test
什么也没做
git checkout origin/test
给 * (no branch)
。这令人困惑。我怎么能在“没有分支”?
如何查看远程Git分支?
雅各布的回答 实际上改善了这一点。使用Git版本≥1.6.6,您可以:
git fetch
git checkout test
(用户masukomi在下面指出 git checkout test
如果你有多个遥控器,将无法在现代git中工作。在这种情况下使用 git checkout -b test <name of remote>/test
)。
在开始在远程分支上本地工作之前,您需要在下面的答案中调用它。
要获取分支,您只需:
git fetch origin
这将为您获取所有远程分支。您可以通过以下方式查看可用于结帐的分支机构:
git branch -v -a
有了远程分支机构,您现在需要查看您感兴趣的分支机构,为您提供本地工作副本:
git checkout -b test origin/test
边注: 用现代的Git(> = 1.6.6),你可以使用
git checkout test
(注意它是'测试'而不是'起源/测试')来执行魔法 DWIM-mery并为您创建本地分支'test',其上游将是远程跟踪分支'origin / test'。
该 * (no branch)
在 git branch
输出意味着您在未命名的分支上,在所谓的“分离的HEAD”状态(HEAD直接指向提交,并且不是对某个本地分支的符号引用)。如果您在此未命名分支上进行了一些提交,则始终可以创建当前分支关闭当前提交:
git checkout -b test HEAD
在这种情况下,您可能想要创建一个本地 test
跟踪遥控器的分支 test
科:
$ git branch test origin/test
在早期版本中 git
,你需要一个明确的 --track
选项,但是当您从远程分支分支时,这是默认选项。
虽然第一个和选定的答案是技术上的 正确,您可能还没有从远程存储库中检索所有对象和引用。如果是这种情况,您将收到以下错误:
$ git checkout -b remote_branch origin/remote_branch
致命:git checkout:更新路径与切换分支不兼容。
您是否打算签出无法解析为提交的'origin / remote_branch'?
如果收到此消息,则必须先执行此操作 git fetch origin
哪里 origin
是运行之前的远程存储库的名称 git checkout remote_branch
。以下是响应的完整示例:
$ git fetch origin
remote: Counting objects: 140, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 69 (delta 36), reused 66 (delta 33)
Unpacking objects: 100% (69/69), done.
From https://github.com/githubuser/repo-name
e6ef1e0..5029161 develop -> origin/develop
* [new branch] demo -> origin/demo
d80f8d7..359eab0 master -> origin/master
$ git checkout demo
Branch demo set up to track remote branch demo from origin.
Switched to a new branch 'demo'
如你所见,跑步 git fetch origin
检索我们尚未设置为在本地计算机上跟踪的任何远程分支。从那里,因为我们现在有一个参考远程分支,我们可以简单地运行 git checkout remote_branch
我们将获得远程跟踪的好处。
我尝试了上面的解决方案,但它没有用。试试这个,它有效:
git fetch origin 'remote_branch':'local_branch_name'
这将获取远程分支并创建一个具有名称的新本地分支(如果尚未存在) local_branch_name
并跟踪其中的遥控器。
$ git checkout -t remote_name/remote_branch
要添加新遥控器,您需要先执行以下操作:
$ git remote add remote_name location_of_remote
$ git fetch remote_name
第一个告诉Git远程存在,第二个获取提交。
使用:
git checkout -b <BRANCH-NAME> <REMOTE-NAME>/<BRANCH-NAME>
在我的良性案例中,其他答案不适用于现代Git。如果远程分支是新的,您可能需要先拉,但我没有检查过这种情况。
要克隆Git存储库,请执行以下操作:
git clone <either ssh url /http url>
上面的命令检出所有分支,但只检查 master
分支将被初始化。如果要结帐其他分支机构,请执行以下操作:
git checkout -t origin/future_branch (for example)
此命令检出远程分支,您的本地分支名称将与远程分支相同。
如果要在结帐时覆盖本地分支名称:
git checkout -t -b enhancement origin/future_branch
现在您的本地分支名称是 enhancement
,但您的远程分支名称是 future_branch
。
好,答案很简单......你基本上看到了分支,但你还没有本地副本......
你需要 fetch
分支...
您可以简单地获取然后结帐到分支,使用下面的一行命令来执行此操作:
git fetch && git checkout test
我还创建了下面的图像,供您分享差异,看看如何 fetch
工作,以及它是如何不同的 pull
: