如何在众多文件中解决相同的合并冲突?

eck*_*kes 6 git merge-conflict-resolution

假设我在200个文件中有这个冲突:

<<<<<<< HEAD
/*  Version         1.0.0       */
/*  Date            2017-05-30  */
=======
/*  Version         1.0.1       */
/*  Date            2018-11-30  */
>>>>>>> release/1.0.1
Run Code Online (Sandbox Code Playgroud)

我确定我想要1.0.1所有文件中的版本.但仅仅使用--theirs所有文件是不可行的,因为我还有其他修改,应该保留--ours.

有没有办法解决这个冲突,--theirs然后手动解决其他冲突(只在一些文件中)?

Mar*_*ger 2

我认为让 git 在冲突解决过程中执行您所要求的操作的唯一方法是编写一个自定义合并驱动程序,在调用正常过程之前检测并“修复”版本信息merge-file。这是可行的,但需要一些设置(请参阅属性git attributes下的文档merge,其中讨论了自定义合并驱动程序)。

如果您可以容忍额外的步骤,那么编写一个脚本(例如 perl 甚至 awk 之类的脚本非常适合该任务)来查找并修复该特定冲突块,然后在冲突的合并上运行该脚本可能会更容易继续手动解决剩余更改之前输出。最大的缺点 - 也是我可能考虑合并驱动程序方法的原因 - 是,如果文件由于版本块而冲突,则您将不需要手动工作,但文件仍将处于冲突状态 -因此您必须检查每个文件以查看是否还有剩余的冲突解决需要完成。

在我看来,重新审视工作流程中可能会出现这些冲突的方面可能是值得的。