Sco*_*ott 5 git revert git-revert
我有以下承诺
\n\ndd9e52bafac5fa427ed64c5d9cf08015fa804ed4 Added Line 3\na000427a4c70781d0bed7b31f56f290ac1d636b7 Added Line 2\n20baa578ae205768639620749f53bd318e329e73 Added Line 1\n7c043a104394ba4ba5a2fb29d4526de50b7d12be Created file.txt\nRun Code Online (Sandbox Code Playgroud)\n\n在提交 dd9e 时,file.txt 现在读取
\n\nLine 1\nLine 2\nLine 3\nRun Code Online (Sandbox Code Playgroud)\n\nHead 和 master 指向最后一次提交(dd9e)。
\n\ngit revert 20baa\nRun Code Online (Sandbox Code Playgroud)\n\n有人告诉我
\n\nerror: could not revert 20baa57... Added Line 1\nhint: after resolving the conflicts, mark the corrected paths\nhint: with \'git add <paths>\' or \'git rm <paths>\'\nhint: and commit the result with \'git commit\'\nRun Code Online (Sandbox Code Playgroud)\n\n我不明白为什么会发生冲突。
\n\n\n\n我想撤消在提交 20baa 中所做的更改(即从文件中删除第 1 行)。我意识到我可以手动执行此操作,然后提交更改,但我认为 git revert 是为了撤消更改?
\n\n我是否误解了 git revert 的作用?
\ngit revert查看原始提交中所做的更改,生成具有相反更改的差异,并尝试应用它。在你的例子中,Git 正在尝试应用此差异:
-Line 1
<nothing else in the file>
Run Code Online (Sandbox Code Playgroud)
当尝试对任何差异中的行应用更改时,如果该行或其两个相邻行此后发生了更改,Git 将引发冲突。这就是 Git 用来猜测同一文件中的更改是否重要到足以打扰您的启发式方法。通过这种启发式,上面的 diff 与文件的最新状态冲突,即:
Line 1
Line 2
Line 3
Run Code Online (Sandbox Code Playgroud)
它拒绝只删除第 1 行,因为下一行过去什么都没有,但现在是第 2 行。Git 认为这可能会影响第 1 行的含义。它不会让你在没有确认后面添加的情况下删除第 1 行毕竟2号线的开通并没有让1号线变得更加重要和值得保留。
| 归档时间: |
|
| 查看次数: |
1224 次 |
| 最近记录: |