从不同的回购中获取/樱桃选择提交[无REF]

时间:2017-03-04 01:38:17

标签: git

我有2个类似的回购 A &的 我尝试访问的提交是: SHA-1

这非常简单,如果我尝试访问的提交会指定一些REF,但事实并非如此,看起来REF在某种程度上已经丢失了。我只获得了提交的SHA-1。

我现在就这样做的方式是:

回购 A

git remote add repo_b path/to/repo_b.git
git fetch repo_b
git cherry-pick SHA-1 

对我来说,无论如何都要避免获取整个存储库引用并且只在该提交中直接执行fetch / cherry-pick?

修改

我也可以访问父母

1 个答案:

答案 0 :(得分:0)

要执行cherry-pick操作,您需要提交本身及其父级(以及它们的treeblob对象),以便您可以将提交转换为修补程序。然后,您可以尝试应用修补程序。

要使用正常的Git传输操作获取提交及其父级,但是,您需要一个可以通过其进行提交的引用。 (正如您所说:git fetch它,可能带有特定的引用名称和/或--depth来限制您带入自己的存储库的对象数量。)

如果没有,你需要一些替代方法(普通的Git传输除外)。这可能包括某种Web界面,在这种情况下,您需要知道哪些URL调用服务器上的哪些方法。或者,您可以尝试使用git archive

虽然git archive通常是您在本地存储库上运行以捆绑自己的提交,但它有一个--remote选项,它在服务器上调用git upload-archive。有关安全性的说明,请参阅该文档,包括是否允许“裸”散列ID。请注意,您仍然需要提交及其父

如果您可以直接访问服务器,最简单的方法(到目前为止)是使用git format-patch将提交转换为补丁。取回生成的补丁并使用git am应用它并从结果中提交,就像git cherry-pick一样。