【问题标题】:Git shallow clone specific version of remote repositorygit浅克隆特定版本的远程仓库
【发布时间】:2017-06-27 00:58:04
【问题描述】:

如何克隆远程存储库某个分支的特定版本?

我正在使用一个非常大的 git 树(更具体地说,是 Linux 内核)。 在很多情况下,我需要将内核代码带到网络和文件系统非常有限的机器上。

通常我只需要获取某个分支上某个提交的代码,而不需要所有主要历史记录。

所以,经过一番挖掘(例如herehere 和其他地方),我将范围缩小到:

$ git clone --branch <remote-branch-name> --single-branch --depth 20 http://some-host:8080/some-git-repo.git
$ cd some-git-repo
$ git reset --hard <commit-ID-that-I-need>

优点:我正在克隆我唯一需要的分支,并且克隆了非常有限的历史记录。

缺点:在克隆之前,我需要实际找出哪个分支具有我需要的提交 ID,并且我还需要估计提交距离分支提示多远并使用它number 作为“深度”参数(我在示例中使用了 20)。

所以我的问题是:如何在没有上述缺点的情况下直接克隆远程存储库某个分支的特定版本?

我发现答案说无法完成,但它们已经过时了。 也许一个较新的 git 有一些允许它的东西?

【问题讨论】:

    标签: git git-clone git-checkout git-reset


    【解决方案1】:

    这似乎是不可能的除非服务器有一个特定的设置。

    uploadpack.allowReachableSHA1InWant
    

    请参阅我为 Git 2.5 及更多版本提到的“Retrieve specific commit from a remote Git repository”。

    git fetch --depth=1 ../testrepo/.git $SHA1
    git cat-file commit $SHA1
    

    【讨论】:

      猜你喜欢
      • 2011-04-03
      • 1970-01-01
      • 1970-01-01
      • 2016-04-27
      • 1970-01-01
      • 1970-01-01
      • 2014-07-16
      • 1970-01-01
      • 2011-04-09
      相关资源
      最近更新 更多