如何使用git将同一组更改应用于不同的回购协议?
我有不同的存储库,它们最终都是从一个回购协议中复制的。但这些回购协议并不包含彼此的承诺历史 i、 e如何使用git将同一组更改应用于不同的回购协议?,git,Git,我有不同的存储库,它们最终都是从一个回购协议中复制的。但这些回购协议并不包含彼此的承诺历史 i、 e 我在回购X中有一个项目 我将没有提交历史记录的文件从X复制到另一个repo Y,并在那里进行了一些定制 类似地,我有L,M,N回购协议 所有这些repos Y、L、M、N在X的文件上有不同的提交 现在,我对X做了一些更改,这些更改可以应用于Y、L、M、N,而不会产生太多冲突(就像一个新特性) 问题是我如何将这些更改应用于Y,L,M,N 我是否需要手动重复所有回购协议上的所有更改,或者有更好的
- 我在回购X中有一个项目
- 我将没有提交历史记录的文件从X复制到另一个repo Y,并在那里进行了一些定制
- 类似地,我有L,M,N回购协议
- 所有这些repos Y、L、M、N在X的文件上有不同的提交
- 现在,我对X做了一些更改,这些更改可以应用于Y、L、M、N,而不会产生太多冲突(就像一个新特性)
我是否需要手动重复所有回购协议上的所有更改,或者有更好的方法吗?您可以在X项目中使用
git格式补丁来创建补丁文件。这里有许多标志,但在简单的用例中,您通常关心其中的两个--n
指定将在补丁文件中存储多少来自头部的提交,并且-o
指定它们的目标目录。例如:
mureinik@computer ~/src/git/x (master)
$ git format-patch -n1 -o /tmp
/tmp/0001-some-commit.patch
然后,您可以在其他项目中使用git am
,以应用这些修补程序。如果它们干净地应用,您将在项目中获得另一个提交。如果存在冲突,您必须解决它们:
mureinik@computer ~/src/git/y (master)
$ git am /tmp/0001-some-commit.patch
Applying: Some commit
经过一番努力,我终于解决了这个问题。为了将来有相同问题的任何机构的参考,我在这里发布了我的解决方案
首先创建补丁(感谢Mureinik的)
这将使您可以手动管理。Git不涉及“更改”。您可能有兴趣了解。@DaemonPainter我想这就是我想要的。但是手册对现在的我来说太多了。我可以参考它的使用指南吗?这对不同的回购协议有效吗?我尝试了这个方法,但是当使用git apply检查状态时——check file.patch
都失败了。但我不知道如何才能获得有关错误的更多信息git am
失败了通常我会假设它会留下冲突标记,而不是失败,但我假设的情况并非如此。
git format-patch --ignore-space-change -1 <cimmit_hash>
patch -p1 --binary --merge -l < ../path/to/your/patch/file