如何检出远程Git分支?
有人用git push origin test
将一个名为test
的分支git push origin test
送到共享存储库。 我可以看到使用git branch -r
。
现在我试图检查远程test
分支。
我试过了:
git checkout test
,它什么都不做
git checkout origin/test
给出* (no branch)
。 这是令人困惑的。 我怎么能在“没有分支”?
如何检出远程Git分支?
更新
Jakub的回答实际上改善了这一点。 使用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并为您创建本地分支'测试',其上游将是远程跟踪分支'起源/测试'。
git branch
输出中的* (no branch)
意味着您处于未命名分支,即所谓的“分离HEAD”状态(HEAD直接指向提交,并且不是对某个本地分支的符号引用)。 如果你在这个未命名的分支上进行了一些提交,你总是可以创建本地分支关闭当前提交:
git checkout -b test HEAD
在这种情况下,您可能需要创建一个本地test
分支,用于跟踪远程test
分支:
$ git branch test origin/test
在早期版本的git
,你需要一个明确的--track
选项,但是当你分支远程分支时,这是默认的。