【问题标题】:Working with 'git revert', and conflicts. How that happens?使用“git revert”和冲突。这是怎么发生的?
【发布时间】:2019-03-06 20:57:49
【问题描述】:

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

l1
l2
l3
l4

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

每一行的每次提交。

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

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

这里发生了什么?

为什么会发生冲突?

谢谢。

【问题讨论】:

  • 请注意,revert 实际上是一种合并(带有一个有趣的合并基础)。见stackoverflow.com/q/47121793/1256452
  • @torek 你能找出原因吗?
  • 它在Igal S.'s answer:您要还原的更改是“在文件末尾添加一行”,所以还原是“在文件末尾删除该行”,但是 that 行不再位于文件末尾。 Git 声明了一个合并冲突,让你去修复它。

标签: git git-revert


【解决方案1】:

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

当上下文改变时会发生冲突。

你有 4 个提交:

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

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

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

更新

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

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

【讨论】:

  • 没有任何链接可以解释吗?
  • 如果我想在这样的场景中恢复一些提交,我应该怎么做
  • 我更新了答案 - 除了手动解决冲突之外,我没有看到任何解决方案
猜你喜欢
  • 1970-01-01
  • 2018-02-26
  • 2018-07-28
  • 1970-01-01
  • 2015-08-23
  • 1970-01-01
  • 2021-04-10
  • 2019-02-24
  • 1970-01-01
相关资源
最近更新 更多