在 GIT 中查看过去的合并冲突

See past merge conflicts in GIT

任何人如何在 git 存储库中检查由于合并冲突而提交的内容?

发生的事情是,我想知道,在一个有多个人工作的特定分支中,过去的特定提交是否是因为合并冲突。

我使用 TortoiseGit 进行分析或者 git bash.

git 存储历史的方式意味着这个问题并没有真正的答案。解释一下:

  • git 中的提交存储整个存储库的 快照,而不是该提交中 更改 的记录(该快照的存储已优化,但这与问题无关)。
  • 标准提交有一个 parent;如果您要求提交中引入的更改,git 只是将其快照与其 parent.
  • 上的快照进行比较
  • 合并提交有两个或多个 parents - 一个来自合并中涉及的每个分支。理论上,没有“主”parent;尽管在实践中,第一个 parent 通常是您签出的分支,第二个(以及任何其他)parent 是您传递给“git merge”或“ git拉”。
  • 当您向 git 询问合并提交中引入的更改时,它必须将其与某些内容进行比较,例如两个 parent 之一。
  • 当您解决合并冲突时,您通常会在提交结果之前这样做。因此,冲突的版本永远不会记录为单独的提交,因此无法与以后的版本进行比较。
  • 请注意,即使没有冲突,合并提交也可能包含并非来自其任何一个 parent 的代码 - 就 git 而言是这样,只是存储库的另一个快照。

您最接近的可能是重播合并,并将 的结果与合并提交进行比较。但是,不同的工具和选项将使用不同的策略来执行合并,因此无法保证回复实际上会重建开发人员在执行原始合并时看到的内容。