Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用git将同一组更改应用于不同的回购协议?_Git - Fatal编程技术网

如何使用git将同一组更改应用于不同的回购协议?

如何使用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 我是否需要手动重复所有回购协议上的所有更改,或者有更好的

我有不同的存储库,它们最终都是从一个回购协议中复制的。但这些回购协议并不包含彼此的承诺历史

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项目中使用
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