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 指向的分支,而是指向
<name>
分支。在非裸存储库中,这是将被检出的分支。--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
网络原因导致的 spring cloud config 读取git上的配置文件时报错:Cannot clone or checkout repository