如何解决多个文件中的相同合并冲突?
How do I resolve the same merge conflict in numerous files?
假设我在 200 个文件中有这个冲突:
<<<<<<< HEAD
/* Version 1.0.0 */
/* Date 2017-05-30 */
=======
/* Version 1.0.1 */
/* Date 2018-11-30 */
>>>>>>> release/1.0.1
我确定我想要所有文件中的 1.0.1
版本。但是简单地对所有文件使用 --theirs
是不可行的,因为我还有其他修改应保留在 --ours
.
中
有没有办法只解决这个与 --theirs
的冲突,然后手动解决其他冲突(仅在少数文件中)?
我能想到的让 git 做你在冲突解决期间要求的唯一方法是编写一个自定义合并驱动程序,在调用之前检测和 "fixes" 版本信息正常 merge-file
过程。这是可行的,但需要一些设置(请参阅 merge
属性下的 git attributes
文档,其中讨论了自定义合并驱动程序)。
如果您可以忍受额外的步骤,那么编写一个脚本(例如 perl 甚至 awk 之类的东西非常适合该任务)可能会更容易找到并修复特定的冲突块,并且 运行 在继续手动解决剩余更改之前,该脚本会处理冲突的合并输出。最大的缺点 - 也是我可能考虑合并驱动程序方法的原因 - 是如果文件冲突 only 由于版本块,你将没有手动工作但是该文件仍将处于冲突状态 - 因此您必须检查每个文件以查看是否还有剩余的冲突解决方案需要完成。
在我看来,重新审视您的工作流程中导致您预料到这些冲突的方面可能会很愤怒。
假设我在 200 个文件中有这个冲突:
<<<<<<< HEAD
/* Version 1.0.0 */
/* Date 2017-05-30 */
=======
/* Version 1.0.1 */
/* Date 2018-11-30 */
>>>>>>> release/1.0.1
我确定我想要所有文件中的 1.0.1
版本。但是简单地对所有文件使用 --theirs
是不可行的,因为我还有其他修改应保留在 --ours
.
有没有办法只解决这个与 --theirs
的冲突,然后手动解决其他冲突(仅在少数文件中)?
我能想到的让 git 做你在冲突解决期间要求的唯一方法是编写一个自定义合并驱动程序,在调用之前检测和 "fixes" 版本信息正常 merge-file
过程。这是可行的,但需要一些设置(请参阅 merge
属性下的 git attributes
文档,其中讨论了自定义合并驱动程序)。
如果您可以忍受额外的步骤,那么编写一个脚本(例如 perl 甚至 awk 之类的东西非常适合该任务)可能会更容易找到并修复特定的冲突块,并且 运行 在继续手动解决剩余更改之前,该脚本会处理冲突的合并输出。最大的缺点 - 也是我可能考虑合并驱动程序方法的原因 - 是如果文件冲突 only 由于版本块,你将没有手动工作但是该文件仍将处于冲突状态 - 因此您必须检查每个文件以查看是否还有剩余的冲突解决方案需要完成。
在我看来,重新审视您的工作流程中导致您预料到这些冲突的方面可能会很愤怒。