git merge,保持两者

26 git git-merge

对于合并,我用它来"保持我的"

git merge -X ours foo
Run Code Online (Sandbox Code Playgroud)

这是为了"保留他们的"

git merge -X theirs foo
Run Code Online (Sandbox Code Playgroud)

但是在我最近的合并中,最好保持双方.为了避免手动编辑文件,Git是否有"策略"?

Dwi*_*man 18

没有用于解决这些冲突的"合并策略".

但是,如果你真的想要一个冲突,比如:

<<<< ours
Foo
=========
Bar 
>>>> theirs
Run Code Online (Sandbox Code Playgroud)

解决

Foo
Bar
Run Code Online (Sandbox Code Playgroud)

然后你可以配置'合并驱动程序'.从gitattributes手册页:

联盟

对文本文件运行3向文件级别合并,但从两个版本中获取行,而不是留下冲突标记.这往往会以随机顺序在结果文件中保留添加的行,用户应验证结果.如果您不理解其含义,请不要使用此功能.

在.gitattributes中添加一行以使用它:

*.whatever merge=union
Run Code Online (Sandbox Code Playgroud)

  • 联盟没有映射到"保持两者".联盟是"保持两者"减去交叉点.当尝试像资源文件一样"保留两者"时,这将失败. (9认同)
  • 但是没有办法将其添加为选项(如果我们不考虑将`.gitattributes`编辑为“选项”),则可以针对要以这种方式合并的冲突专门调用该选项?这些是如此普遍,以至于有一种方法可以将它们单行cli(将多个导入/函数/属性添加到同一文件和顺序无关紧要) (2认同)
  • “.*whatever”在这里意味着什么?一切都清楚了 (2认同)

小智 8

这个如何?

grep -v -e'^<<<<<<<' -e '^>>>>>>>' -e'=======' filename.txt > filename.tmp

mv filename.tmp filename.txt