git clone 和 checkout 在一个命令中

Posted

技术标签:

【中文标题】git clone 和 checkout 在一个命令中【英文标题】:git clone and checkout in a single command 【发布时间】:2013-09-02 17:24:43 【问题描述】:

以下是我用来检查特定提交的命令。

git clone git://repo.git/repo123
git checkout <commitID>

我想一步完成上述操作 - 仅使用 git clone 命令。

我之所以要这样做是因为 repo123 非常庞大。所以检查我想要的提交将节省我很多时间。

我知道--depth 选项。但在这种情况下,它是没有用的。谁能告诉我怎么做?

【问题讨论】:

--depth有什么问题? 【参考方案1】:

我认为您只是希望能够“走开”并在两个步骤完成后返回。我将此行用于一行中的两个长时间运行的命令——我喜欢“计时”整个操作。

诀窍是每个命令之间的分号。

$ time (git clone git://repo.git/repo123 ; git checkout <commitID>)

【讨论】:

【参考方案2】:
git clone u://r/l --branch x

仍然会克隆所有内容,但将本地 HEAD 设置为该分支,因此它是已检出的分支。

Source:

--branch -b 不要将新创建的 HEAD 指向克隆存储库的 HEAD 指向的分支,而是指向 &lt;name&gt; 分支。在非裸存储库中,这是将被检出的分支。 --branch 还可以在结果存储库中的该提交处获取标签并分离 HEAD。

【讨论】:

这就是我一直想要实现的......非常有帮助,谢谢,【参考方案3】:

您的问题是 checkout 太大还是 repository 本身? 作为git clone,好吧,克隆一个存储库,您通常会获得完整大小的整个存储库。 (除非您按照您的建议进行浅层克隆。)

如果真的是结错分支git help clone说:

   --no-checkout, -n
       No checkout of HEAD is performed after the clone is complete.

-n克隆后可以手动签出

【讨论】:

【参考方案4】:

我遇到了同样的情况,它与 --depth 的 Git 克隆命令配合得很好。并在命令末尾用-b参数指定branch-name/commit/Tag-Name。

语法:

git clone --depth 1 github.com:ORG-NAME/Repo.git -b <Branch-Name/Commit-Number/TAG>

【讨论】:

这真的适用于提交 SHA1 吗?我已经用 git 2.5.0 试过了,虽然它接受分支名称和标签,但它不适用于提交。

以上是关于git clone 和 checkout 在一个命令中的主要内容,如果未能解决你的问题,请参考以下文章

Git 常用操作 - git clone/git checkout -b/git diff/git push/git pull

Git 常用操作 - git clone/git checkout -b/git diff/git push/git pull

git报错warning: Clone succeeded, but checkout failed

git-clone 和结帐后挂钩

【Git】checkout 用法总结

网络原因导致的 spring cloud config 读取git上的配置文件时报错:Cannot clone or checkout repository