以下是我用来签出特定提交的命令。
git clone git://repo.git/repo123
git checkout <commitID>
我想一步完成上述操作 - 仅使用git clone命令。
我想这样做的原因是,repo123非常庞大。因此,检查我想要的提交将为我节省很多时间。
我知道--depth
选项。但在这种情况下,它是没有用的。谁能告诉我怎么做?
答案 0 :(得分:31)
git clone u://r/l --branch x
仍然克隆了所有内容,但是将本地HEAD设置为该分支,因此它是签出的。
- 分支&lt; name&gt;
强> -b&lt; name&gt;
强> 而不是将新创建的HEAD指向克隆存储库的HEAD指向的分支,而是指向<name>
分支。在非裸存储库中,这是将要检出的分支。--branch
还可以在结果存储库中的该提交处获取标记并分离HEAD。
答案 1 :(得分:3)
我遇到了同样的情况,它与--depth
的Git克隆命令配合得很好。并使用-b
参数在命令末尾指定branch-name / commit / Tag-Name。
语法:
git clone --depth 1 github.com:ORG-NAME/Repo.git -b <Branch-Name/Commit-Number/TAG>
答案 2 :(得分:2)
您的问题 checkout 是大型还是存储库本身?
作为git clone
,克隆一个存储库,通常可以获得整个存储库的完整大小。 (除非你正在按照你的建议进行浅层克隆。)
如果真的是关于错误分支的结账git help clone
说:
--no-checkout, -n
No checkout of HEAD is performed after the clone is complete.
使用-n
克隆后,您可以手动结帐
答案 3 :(得分:1)
我认为您只是希望能够在两个步骤都完成后“走开”并返回。我将此行用于一行中的两个长时间运行的命令 -- 我喜欢“计时”整个操作。
诀窍在于每个命令之间的分号。
$ time (git clone git://repo.git/repo123 ; git checkout <commitID>)