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

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

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

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

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

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

【问题讨论】:

  • --depth有什么问题?

标签: git clone commit git-checkout


【解决方案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 试过了,虽然它接受分支名称和标签,但它不适用于提交。
      猜你喜欢
      • 2016-04-10
      • 2019-07-29
      • 1970-01-01
      • 2011-11-10
      • 2018-01-01
      • 2021-12-06
      • 1970-01-01
      • 2016-06-22
      • 1970-01-01
      相关资源
      最近更新 更多