在解决合并冲突并分阶段解决之后如何获得原始的冲突差异

时间:2018-05-05 16:32:02

标签: git git-merge git-diff merge-conflict-resolution

我们的一个约定是,当发生合并冲突时,在解决它之后,应该将原始的冲突差异添加到提交消息中,以帮助后来可能试图找出是否发生错误合并的开发人员。 / p>

我这样做的常用方法是

git diff >conflict_log

然后我将其复制粘贴到提交消息中。

我希望改进该工作流程的一些缺点:

  • 您可能会忘记首先保存conflict_log,然后开发人员通常最终重做合并以获得原始差异
  • 如果差异较大并且您正在使用ssh会话,则复制粘贴整个差异可能会更困难

我想做的是创建一个prepare-commit-msg钩子,它会自动将这个差异添加到提交消息中。

我遇到的问题是,在prepare-commit-msg运行时,索引已经更改,因此git diff的工作方式不同,并且不再仅显示原始冲突。

我尝试过使用像

这样的版本
git diff hash hash^1 hash^2

在此处的文档中:https://git-scm.com/book/en/v2/Git-Tools-Advanced-Merging 在"组合Diff格式"建议使用

git diff --cc

但我不确定,

  • 我应该使用HEADMERGE_HEADORIG_HEAD,因为我在合并提交之前尝试在prepare-commit-msg中执行此操作实际上已经承诺?

  • 我希望在用户开始解析之前,从冲突解决中获取git生成的带有<<<<<<标记的差异,但在prepare-commit-msg运行时,用户已经分阶段他们的决议,有没有办法我可以采取差异对指数的状态,而不是当前的状态?

0 个答案:

没有答案
相关问题