说我有一个文件foo.txt
。我决定要bar.txt
foo.txt
,就像bar
一样,但对其中的一部分进行了一些重大更改。
如果我创建一个分支foo.txt
,并在那里进行那些更改(可能包括重命名),我可以使用`git merge将bar.txt
的更改合并到foo
。 / p>
另一方面,如果我只复制文件,使bar
和{{1}}是同一分支中的不同文件,是否有办法保持[某些]更改在它们之间保持同步?
“正确”的选择是使代码更加模块化,删除重复的代码 - 但假设这不是一个可用的解决方案,有没有办法实现这个?
答案 0 :(得分:2)
git merge-file <current-file> <base-file> <other-file>
git merge-file包含了从中引出的所有更改 &LT;碱文件&gt;到&lt; other-file&gt;进入&lt; current-file&gt;。该 结果通常会进入&lt; current-file&gt;。 git merge-file是 用于将单独的更改组合到原始文件中。假设 &LT;碱文件&gt;是原始的,并且&lt; current-file&gt;和 &lt;其他-文件&gt;是&lt; base-file&gt;的修改,然后是git merge-file结合了这两个变化。
在你的情况下,你可以创建一个空的和一个git合并文件,
git merge-file foo.txt empty.txt bar.txt
foo.txt
是您的合并文件
答案 1 :(得分:2)
不,这是不可能的,除非你在分歧之前有你的文件的基本版本。
Git总是在合并中使用三种文件状态:基本文件C,版本A和版本B.然后有效地添加C和A之间的差异,以及C和B,在文件C上重放它们。除非你有三个不同的输入文件,输出将始终是文件A或文件B而不做任何更改。