如何选择一些提交来生成补丁?

时间:2014-03-07 15:23:22

标签: git repository commit patch

我在repo A中修改了不同提交中的文件,而我保留了另一个几乎拥有相同文件的repo B.

我想从repo A生成一些补丁,修改一些文件并将它们应用到repo B上。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

回答您的主要问题:如果您想使用补丁执行此操作,请在回购A:

git format-patch <starting hash>..<ending hash>

然后,在回购B:

git apply <each patch file generated using the above method>
但是,我要提醒您确保文件非常相似。如果存储库分歧很多,补丁可能会很难正确应用。

第二种方法:根据存储库的相似程度,将repo A添加为repo B的辅助远程可能很有用。这将允许您获取和挑选提交与其他任何上游存储库一样,完全避免使用补丁文件。

这看起来像是:

git remote add repoA <path to repo A>
git fetch repoA
git cherry-pick <relevant commits in repo A>

此:

  • 将Repo A添加为第二个遥控器。
  • 获取Repo A的提交历史记录。
  • Cherry-选择相关提交到您当前的存储库。

也就是说,添加第二个遥控器会有很多不必要的开销,例如下载大量不必要的历史记录,因此您可能会发现补丁更适合您的问题。