50

以下是我用来签出特定提交的命令。

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

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

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

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

4

4 回答 4

69
git clone u://r/l --branch x

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

来源

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

于 2013-09-10T23:23:14.973 回答
6

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

如果它真的是关于错误分支的结帐git help clone说:

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

克隆后-n可以手动签出

于 2013-08-30T06:18:54.957 回答
3

我遇到了同样的情况,它与带有--depth. 并在命令末尾使用-b参数指定分支名称/提交/标签名称。

句法:

git clone --depth 1 github.com:ORG-NAME/Repo.git -b <Branch-Name/Commit-Number/TAG>
于 2013-08-30T05:15:30.060 回答
1

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

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

$ time (git clone git://repo.git/repo123 ; git checkout <commitID>)
于 2021-01-07T17:06:13.093 回答