在git中自动合并单行冲突

时间:2016-07-21 13:07:53

标签: git merge

我们在git repo中有大量生成的PHP文件。当有人使用应用程序中的编辑器创建某些内容时,将生成这些文件。我们需要将内容保持在可部署的形式,因此将其检入git。

令人烦恼的是,生成的文件在顶部有注释,例如:

//创建时间:2016-07-21 09:24:25

在很多情况下,此时间戳是对文件的唯一更改。但是,当本地和远程都发生了变化时,git当然会将此视为冲突。这导致大量的手动合并冲突在拉动时解决。

有没有办法指示git将这一行自动合并到"我们的"而不是引发冲突?

我搜索并找到了自动合并整个文件的解决方案,"我们的"或者"他们的"还有"污迹"但我不认为其中任何一个真正做我们需要的。我们想要// created:签入注释,但我们只想让git自动合并该特定行的冲突。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

  

有没有办法指示git将此行自动合并为“我们的”而不是引发冲突?

不直接,不。您可以指示git merge使用“合并工具”(通常是用于合并解析的GUI)并实现一个可以满足您需要的自定义工具;但我宁愿创建一个小脚本,它会执行以下操作(根据您使用的环境--Windows / Unix / bash / ruby​​等,不应该那么难):

  • 使用适当的选项运行git merge
  • 如果脚本没有检测到冲突(解析输出和/或从git merge退出代码),那么就完成了。
  • 否则,加载冲突的文件(您可以从git status获取它们,这应该比git merge的输出更容易解析
  • 使用正则表达式检测并修复您感兴趣的冲突应该非常简单。
  • 保存文件。
  • 检查是否包含其他冲突标记;如果没有,git add
  • 当您完成所有文件,并且没有任何冲突标记时,git commit

在此之后,合并完成,或者您必须执行通常的冲突解决,并且所有时间戳已经解决。