Git Revert

17 Mar 2025 | 4 分钟阅读

在 Git 中,术语“revert”用于还原一些更改。 git revert 命令用于应用 revert 操作。它是一个撤销类型的命令。但是,它不是传统的撤销替代方案。它不会在此过程中删除任何数据;相反,它将创建一个具有相反效果的新更改,从而撤销指定的提交。通常,git revert 是一个提交。

它可以用于跟踪项目中的错误。 如果你想从历史记录中删除某些内容,那么 git revert 是一个错误的选择。

此外,我们可以说 git revert 记录了一些与先前提交相反的新更改。 要撤销更改,请运行以下命令

语法

Git Revert 选项

Git revert 允许一些额外的操作,如编辑、不编辑、清理等等。 让我们简要了解这些选项

< commit>: commit 选项用于还原提交。 要还原提交,我们需要提交引用 id。 git log 命令可以访问它。

<--edit>: 它用于在还原提交之前编辑提交消息。 它是 git revert 命令中的一个默认选项。

-m parent-number /--mainline parent-number: 它用于还原合并。 通常,我们无法还原合并,因为我们不知道合并的哪一侧应被视为主线。 我们可以指定父编号,并允许 revert 逆转相对于指定父级的更改。

-n/--no edit: 此选项不会打开文本编辑器。 它将直接还原最后一个提交。

--cleanup=<mode>: cleanup 选项确定如何从消息中删除空格和注释。

-n/--no-commit: 通常,revert 命令默认提交。 no-commit 选项不会自动提交。 此外,如果使用此选项,您的索引不必与 HEAD 提交匹配。

no-commit 选项有利于依次还原多个提交的影响到您的索引。

让我们了解如何还原之前的提交。

Git 还原到之前的提交

假设您对项目的某个文件(例如 newfile2.txt)进行了更改。 后来,你提醒说你在错误的文件或错误的分支中做了错误的提交。 现在,您想撤销更改,您可以这样做。 Git 允许您纠正错误。 考虑下图

Git Revert

如您从上面的输出中看到的,我已对 newfile2.txt 进行了更改。 我们可以通过 git revert 命令来撤销它。 要撤销更改,我们需要 commit-ish。 要检查 commit-ish,请运行以下命令

考虑下面的输出

Git Revert

在上面的输出中,我复制了最新的 commit-ish 来还原。 现在,我将对这个提交执行 revert 操作。 它将操作为

上面的命令将还原我的最后一次提交。 考虑下面的输出

Git Revert

如您从上面的输出中看到的,对存储库所做的更改已被还原。

Git 还原合并

在 Git 中,合并也是一个至少有两个父级的提交。 它连接分支和代码以创建一个完整的项目。

Git 中的合并是一个至少有两个父级的提交。 它将多个开发行结合在一起。 在一个功能在分支中开发然后合并到主线的流程中,合并提交通常会有两个父级。

如何还原合并

通常,还原合并被认为是一个复杂的过程。 如果操作不正确,它可能很复杂。 我们将借助 git revert 命令撤消合并操作。 尽管一些其他命令,如 git reset 可以做到这一点。 让我们了解如何还原合并。 考虑以下示例。

我已对测试中的文件 design2.css 进行了更改,并将其与 test2 合并。 考虑下面的输出

Git Revert

要还原合并,我们必须获取其参考号。 要检查提交历史记录,请运行以下命令

上面的命令将显示提交历史记录。 考虑下面的输出

Git Revert

从上面的输出中,复制您要还原的合并提交并运行以下命令

上面的命令将还原合并操作。 这里,-m 1 用于第一个父级作为主线。 合并提交有多个父级。 还原需要额外的信息来决定合并的哪个父级应被视为主线。 在这种情况下,使用参数 -m。 考虑下面的输出

Git Revert

从上面的输出中,我们可以看到之前的合并已被还原。


下一个主题Git Reset