迹忆客 专注技术分享

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

在 Git 的仓库中恢复到以前的提交

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

在本文中,我们将学习如何在 Git 的仓库中恢复到以前的提交。

Git 是一个版本控制系统,用于协作开发环境中以跟踪对文件所做的更改。

Git 用于捕获项目目录中文件更改的快照,并将它们与提交相关联。

在 Git 中,使用提交可以浏览和查看对文件所做更改的历史记录。

我们还可以使用 Git 将 Git 仓库中项目目录的文件重置或恢复到先前的提交(即)在创建提交时目录中文件的状态。

我们现在将用一个例子来说明这一点。


使用 git reset 重置到 Git 仓库中的先前提交

在协作开发环境中,我们使用 Git 来跟踪对 Git 仓库中项目目录中的文件所做的更改。

当我们创建一个提交来保存我们的工作时,Git 会创建一个唯一的 ID(也称为 SHA哈希),它允许我们记录提交的特定更改以及提交的人员和时间。

提交是对文件(或文件集)的单独更改。提交通常包含提交消息,该消息是对所做更改的简要描述。

有时,我们可能需要将项目目录的仓库恢复或重置为以前的提交。

假设我们有以下提交,如我们的仓库中的 git log 命令所示。

$ git log --oneline
e4cd6b4 (HEAD -> main, origin/main) my change
99541ed second change
41f1f2a first change
...

现在,假设我们要将仓库重置为 SHA 41f1f2a 给出的先前提交,并带有注释 first change

一种方法是使用 git checkout 命令临时切换到上一个提交。

因此,我们将执行以下操作。

$ git checkout 41f1f2a

我们还可以使用之前的提交创建一个新分支,这样我们就可以在该分支中提交新的更改。

因此,我们将执行以下操作。

$ git checkout -b first-change-branch 41f1f2a

相反,如果我们想放弃自上次提交以来的更改,我们将使用 git reset 命令。

将仓库重置回之前提交的 git reset 命令的语法是 git reset -hard <commit-sha-id>

因此,在我们的案例中,我们将执行以下操作。

$ git reset --hard 41f1f2a

请注意谨慎使用;这也将丢弃任何本地修改。任何未提交的更改都将丢失。

或者,我们可以在重置之前存储更改,如下所示。

$ git stash
$ git reset --hard 41f1f2a
$ git stash pop

执行上述命令后,本地修改保存在 stash 中;然后,在重置为上一次提交后,这些修改将重新应用于仓库。


使用 git revert 恢复到 Git 仓库中的先前提交

当我们想要保留仓库的历史记录时,使用 git revert 命令。

执行命令 git revert 后,Git 会创建一个带有反向补丁的提交以使之前的提交无效。这样,我们就不会重写任何历史。

将仓库恢复到以前的提交的 git revert 命令的语法是 git reset <commit-sha-id1> <commit-sha-id2> ...

因此,我们想要恢复前两个提交以将仓库恢复为 SHA 41f1f2a 给出的提交。

$ git revert e4cd6b4 99541ed

它将通过给定的两个提交恢复仓库。

我们也可以如下执行 git revert 命令。

$ git revert HEAD~2..HEAD

上面的 git revert 命令将恢复最后两次提交。

最后,如前所述,git revert 命令创建一个提交以取消先前的提交。因此,我们现在需要保存这个提交。

我们需要做如下。

$ git commit -m "reverted commits e4cd6b4 99541ed"

因此,现在提交的还原现在作为新提交保存在仓库中。

在某些情况下,存在合并提交,我们可能也想恢复它。

我们可以使用带有选项 -m parent-numbergit revert 命令;此选项指定主线的父级编号(从 1 开始),并允许 revert 反转相对于指定父级的更改。

合并提交有多个父级。git revert 命令需要额外的信息来决定合并的哪个父级应被视为主线。

该命令的语法是,git revert -m 1 <commit-sha-id>1 用于作为主线的第一个父级。

因此,假设提交 SHA e4cd6b4 是合并提交。然后我们可以如下操作。

$ git revert -m 1 e4cd6b4

因此,我们详细说明了如何在 Git 中恢复到仓库中的先前提交。

欲了解更多信息,请访问下方。

  1. git-reset
  2. 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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便