首页 > 解决方案 > 使用“git revert”和冲突。这是怎么发生的?

问题描述

我正在编写一个文本文件,其名称为“f2.txt”。我对文件的每一行都做了一个提交。它的内容是:

l1
l2
l3
l4

换句话说,它有四个提交。

每行的每次提交。

所以我试图恢复一个提交。我有冲突。即使我认为这样做我也不会遇到任何冲突,因为它是每一行的提交。(不是同一行)

但是,是的,我确实会发生冲突,即使是做这样简单的事情。

这里会发生什么?

为什么我会发生冲突?

谢谢。

标签: gitgit-revert

解决方案


我假设您已尝试恢复不是最后一次的提交。

当上下文发生变化时,就会发生冲突。

你有 4 个提交:

  • 添加 l1 - 新行到空文件
  • 添加 l2 - 在 l1 之后和文件末尾之前
  • 添加 l3 - 在 l2 之后和文件末尾之前
  • 添加 l4 - 在 l3 之后和文件末尾之前

现在您尝试恢复第三次提交。Git 不知道该怎么做,它可以看到之前的 l2,但它期待文件结束,而不是你有 l4。

显然比这要复杂一些。patch 命令足够聪明,可以检测移动的线条等等,但基本上就是这样。

更新

除了手动解决冲突之外,我真的没有看到任何解决方案。

您可以在git-tower中阅读有关合并和冲突的信息


推荐阅读