迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 操作系统 > Git >

在 Git 中恢复合并提交

作者:迹忆客 最近更新:2023/03/30 浏览次数:

有时,我们需要合并两个或多个分支,然后将提交推送到所需的分支。但是后来我们意识到我们不需要在那个仓库中进行合并,所以这里的问题是如何撤消或恢复已经推送的合并提交。没什么可担心的。对于这个问题,Git 有一个很好的解决方案,我们将在下面讨论。

根据问题的不同,有两种处理这种情况的方法;一种是它尚未推送到仓库但已提交。另一个是它被提交并推送到仓库中。下面讨论了这两种情况:


撤销未推送的 Git 提交

直接在 Git 中恢复提交是不可能的。尽管如此,我们需要在恢复之前检查提交。还原后,现在工作目录的位置与我们推送提交之前的工作目录位置相同。

我们现在可以应用 git reset 命令将索引指针移回它的位置,即提交之前的位置。例如,如果我们想保留提交 Commit1Commite3 的更改,但恢复提交 Commit2 的更改,请执行此命令。

git reset HEAD~3

此命令会将索引指针返回到提交 Commit2 之前的位置。还原提交后,我们需要再次将更改的文件添加到工作目录。例如,执行以下命令:

git checkout Commit1 
git add Commit1  
git checkout Commit3 
git add Commit3
git commit

之后,我们可以将提交 Commit1Commit3 推送到远程仓库。

git push

如果我们想合并两个分支,然后恢复一个分支的更改,我们可以使用以下命令:

git merge --abort

该命令用于取消合并过程。之后,我们可以将更改还原到分支。如果我们想撤销最后一次提交或多次提交的影响,本节讨论的命令很有用。

但是,如果我们想撤销最后两次或更多次提交的影响,我们需要将工作目录重置为最后一次提交之前的状态。这是因为不可能直接恢复一个或多个提交。


恢复已推送的 Git 提交

在另一种情况下,如果我们已经将合并提交推送到远程分支并且也推送了它,我们必须进行一个新的提交来恢复更改。我们将执行以下命令:

git revert -m 1 <merge-commit-hash>

这将开发一个新的提交,它将逆转先前合并提交的更改。但是,这个新提交也将包含原始合并提交的所有更改,因此我们需要编辑提交消息以表明这是一个还原提交。而我们提到的选项,-m 1 将告诉 Git 我们想要保留合并的分支。

revert command 不会改变工作树。它只修改索引。revert command 还具有恢复提交的原始消息的选项。在上面给出的示例中,-m 选项用于恢复提交的原始消息。revert 命令还可用于从集成提交中恢复特定文件。

当我们进行更改并决定不再希望保留该更改时,Git revert 是一个有用的工具,可以在我们的本地分支上使用。不建议在公共分支上使用。

众所周知,git revert 是完全可逆的,不可能撤销它的改变。如果我们在其分支上不是当前提交的提交上执行 git revert,我们必须非常小心,因为 git revert 将开发具有新提交 ID 的新提交。

如果我们稍后执行 git reset –hard 来恢复 git revert 所做的更改,我们还将删除创建 git revert 撤消提交的开发人员所做的更改。可以在公共分支上使用 git revert,但根据我的观点,这样做不是一个好主意。最好开发一个新分支来进行更改,然后在完成后将其合并到 master 分支中。

如果我们想在公共分支上使用 git revert,请确保我们是唯一在该分支上工作的人,否则我们将撤消其他人的工作。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 Windows 系统中卸载 git

发布时间:2023/04/09 浏览次数:223 分类:Git

在这篇简短的文章中,我们将学习如何卸载 Git,以及如何在从个人计算机的目录中卸载 Git 后删除这些文件。

如何检查 Git 的版本

发布时间:2023/04/09 浏览次数:160 分类:Git

在这篇检查Git最新版本的文章中,我们将学习如何在本地个人计算机或任何服务器上检查Git版本。

Git 如何重命名本地分支

发布时间:2023/04/09 浏览次数:64 分类:Git

大多数情况下,重命名分支机构是由于上述情况。 因此,在本教程中,我们将学习使用下面提到的技术更改本地 Git 分支的名称。

重命名 Git 存储库中的文件和目录

发布时间:2023/04/09 浏览次数:102 分类:Git

在本文中,我们将讨论 git 中的重命名过程。 我们使用 Git Rename 来更改工作目录中文件和文件夹的名称。

在 Git 中取消初始化存储库

发布时间:2023/04/09 浏览次数:187 分类:Git

本本文介绍如何通过 Git 命令行取消初始化 Git 存储库。git init 命令开发一个新的空置 Git 存储库。 它还用于重新初始化已经存在的 Git 存储库。

Git 仓库名称该如何命名

发布时间:2023/04/09 浏览次数:208 分类:Git

使用 Git 时,选择一个简洁且最新的存储库名称是一项艰巨的任务。本教程介绍了如何以独特的方式命名 Git 存储库。

配置 Git 以忽略文件模式更改

发布时间:2023/04/09 浏览次数:67 分类:Git

本文讨论配置 Git 以忽略文件更改 chmod 所需的步骤。 如果您更改 Git 正在跟踪的文件的权限,系统将在该文件中注册更改。

在 Git 中暂存已删除的文件

发布时间:2023/04/09 浏览次数:93 分类:Git

本文讨论了在 Git 中暂存已删除文件的必要步骤。我们知道 rm 命令可以删除一个文件,而无需将其从工作目录中移除。 那么,我们如何暂存已删除的文件以进行提交呢?

在 Git 中显示冲突文件

发布时间:2023/04/09 浏览次数:139 分类:Git

本文讨论在 Git 中列出冲突文件的最简单和最干净的方法。 我们可以使用 git status 命令,但这很麻烦,尤其是当我们有大量不冲突的文件时。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便