是否可以在不克隆整个存储库的情况下从另一个存储库中挑选一个提交?

Is it possible to cherry-pick a commit from another repository without cloning the entire repository?

我的带宽非常有限,所以我想知道是否可以在不实际克隆的情况下从另一个存储库获取提交。 这两个存储库具有相同的文件结构,但它们根本不共享历史记录。他们两个都是相互独立的,但我仍然想挑选其中一个提交给另一个。 这可能吗?

简答:理论上可以,但做起来并不容易。

从“Retrieve specific commit from a remote Git repository”开始,您需要:

  • git 存储库托管 服务器 具有:
    • git 2.5+
    • git config uploadpack.allowReachableSHA1InWant true(服务器端)
  • 具有单提交提取的浅克隆(同样,git 2.5+,客户端)

即:您将初始化一个空回购,添加远程源回购的 url,并且:

git fetch --depth=1 ../testrepo/.git <SHA1>

那只会带来 一个 提交。

您可以只从另一个 git 存储库获取具有提交的分支,然后 git 挑选它。