我对git revert的工作方式感到困惑

时间:2019-04-10 08:10:24

标签: git github revert git-revert

我想知道发生了什么事。我创建了一个HTML文件,并在其中添加了一些行

this is first line
this is second line
this is third line
this is fourth line

并分别在每一行之后提交,分别是commit a,commit b,commit c,commit d。

现在我执行了还原操作以提交c,但是它引发了一个错误:

could not revert 82b69e5... c

hint: after resolving the conflicts, mark the corrected paths <br>
hint: with 'git add <paths>' or 'git rm <paths>' <br>
hint: and commit the result with 'git commit'<br>

我想知道git-revert的工作原理。我知道类似这样的内容“撤消提交并添加新的提交”,但不知道成功使用它。

2 个答案:

答案 0 :(得分:3)

它为要还原的提交创建了一个反向补丁,因此在您的情况下,提交'use strict'; const { workerData, parentPort } = require('worker_threads'); console.log('findEmptyArea executing', workerData); for (let i = 0; i < 1000000000; i++) { // high computation } parentPort.postMessage({ hello: workerData }); 看起来像:

c

然后,从 this is first line this is second line +this is third line # End of file 开始运行d,因此它将尝试创建以下内容并将其应用到您的树上:

git revert c

但是,您的文件如下所示:

 this is first line
 this is second line
-this is third line
# End of file

因此创建的补丁不适用(文件末尾与第四行冲突)。因此,当Git告诉您:

this is first line
this is second line
this is third line
this is fourth line
# End of file

这意味着“我试图按照您的要求去做,但是我遇到了我无法解决的问题”,因此您需要:

  • 使用How to resolve merge conflicts in Git
  • 解决冲突
  • 或使用could not revert 82b69e5... c hint: after resolving the conflicts, mark the corrected paths hint: with 'git add ' or 'git rm ' hint: and commit the result with 'git commit' 取消还原

最有可能的解决方法是:

git revert --quit

答案 1 :(得分:1)

git revert命令可以被视为“ 撤消”类型的命令,但是,它不是传统的撤消操作。

从本质上讲,它将撤消在指定提交中完成的所有操作,然后在流程中创建一个新的提交。您可以检查this了解更多信息。

关于您的问题,您遇到合并冲突。要解决这些冲突,您可以使用git mergetools(例如Meld)。