我有以下提交
dd9e52bafac5fa427ed64c5d9cf08015fa804ed4 Added Line 3
a000427a4c70781d0bed7b31f56f290ac1d636b7 Added Line 2
20baa578ae205768639620749f53bd318e329e73 Added Line 1
7c043a104394ba4ba5a2fb29d4526de50b7d12be Created file.txt
在提交 dd9e 时,file.txt 现在读取
Line 1
Line 2
Line 3
Head 和 master 指向最后一次提交 (dd9e)。
如果我运行 git 命令
git revert 20baa
我被告知
error: could not revert 20baa57... Added Line 1
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
我不明白为什么会有冲突。
在 VS Code 中查看冲突时,它显示以下内容
我想要发生的事情
我想撤消在提交 20baa 中所做的更改(即从文件中删除第 1 行)。我意识到我可以手动执行此操作然后提交更改,但我认为 git revert 是为了撤消更改?
我误解了 git revert 的作用吗?
最佳答案
git revert
查看原始提交中所做的更改,生成具有相反更改的差异,并尝试应用它。在您的情况下,Git 正在尝试应用此差异:
-Line 1
<nothing else in the file>
当尝试将更改应用于任何差异的行时,如果该行或其两个相邻行从那时起发生了更改,Git 将引发冲突。这是 Git 用来猜测同一文件中的更改是否重要到足以打扰您的启发式方法。使用这种启发式方法,上述差异与文件的最新状态冲突,即:
Line 1
Line 2
Line 3
它拒绝删除第 1 行,因为下一行以前什么都没有,但现在是第 2 行。Git 认为这可能影响了第 1 行的含义。它不会让你在不确认后面添加的情况下删除第 1 行毕竟,第 2 行并没有使第 1 行变得更重要和值得保留。
关于git - 为什么 git revert 会产生冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49822262/