Git 还原:如果我还原,它将删除自指定提交以来的所有更改,而不仅仅是提交中的更改



在一个非常简单的示例中,我创建一个文本文件并添加一行字符,然后init add和commit。我的文件看起来像这样:

111年

然后我添加另一行字符add和commit,所以我的文件看起来像这样:

111年

222年

然后我添加另一行字符add和commit,所以我的文件看起来像这样:

111年

222年

333年

然后我恢复##########,引用第二次提交,在那里我添加了222

在VSCode中,我得到一个冲突来解决和接受传入的更改,我剩下:

111年

我想应该是:

111年

333年

这就是revert的工作原理吗?基于文档,它应该只删除提交中的更改,而不是此后的所有更改。知道我哪里做错了吗?

在VSCode中,我得到一个冲突来解决

问题的答案

这就是revert的工作原理吗?

答案是:是的!

,

并接受传入的更改

不是典型的冲突解决方案。事实上,如果冲突解决方案完全忽略了一方,这是非常值得怀疑的。(我不是说它总是错的,只是它很不典型。)

在您的例子中,冲突是这样的:

111
<<<<<<
222
333
======
>>>>>>

需要考虑一下需要做什么。只需点击"help "按钮在VS Code中很少是正确的。您必须检查已恢复的提交做了什么,并重新生成反向的提交。在这个简单的例子中,您必须手动撤消提交的所有编辑,并进行额外的编辑以到达

111
333

使git revert不保存任何东西(除了它为您写了一个聪明的提交消息)。

最新更新