通过提交 ID 恢复 Git 仓库
本文将讨论基于提交 ID 还原 Git 仓库。我们可能需要回到较旧的提交以检查其状态或删除之后的提交。
让我们讨论这两种情况。
临时切换到 Git 提交
我们使用 git checkout
命令临时切换到较旧的提交,同时提及提交 ID。
$ git checkout <Commit ID>
此命令将分离我们的 repo 的 HEAD
(我们没有在分支上签出)。在这种状态下,我们无法提交。
如下所示,我们必须根据提交创建一个新的分支。
$ git switch -c <new-branch-name>
我们可以结合上面的命令来做同样的事情,如下所示。
$ git checkout -b <new-branch-name> <Commit ID>
通过提交 ID 恢复 Git 仓库
我们使用带有 --hard
标志的 git reset
命令,同时传递我们想要回滚到的提交 ID。运行以下命令。
$ git reset --hard <Commit ID>
运行此命令将删除我们最近的所有提交,直到提到的提交。该命令还将删除索引中任何未提交的更改。
如果要保留更改,请执行以下操作:
$ git stash
$ git reset --hard <Commit ID>
$ git stash pop
如果要更新远程仓库,请使用下面的 git push
命令。
$ git push -f
请小心使用此命令,因为它将根据你的本地仓库覆盖远程仓库。让我们看一个例子。
在下面的示例中,我们将尝试根据提交 id 恢复我们的 git repo Delftscopetech
。让我们运行 git log
命令来列出我们 repo 中的所有提交。
$ git log --oneline
如果我们想回到 Fourth Update
,我们会怎么做呢?
我们在下面的上下文中运行 git reset
命令。
$ git reset --hard df90895
HEAD is now at df90895 Fourth Update
输出显示我们的 HEAD
现在处于 Fourth Update
。我们可以运行 git push
命令将更改推送到我们的远程仓库。
如果要撤消重置,请按照此操作。
首先,我们运行 git reflog
命令来查看我们 repo 中的所有参考更新。
$ git reflog
你的输出看起来很相似。我们可以在 HEAD@{0}
看到我们的重置。
要返回,我们运行 git reset
命令,如下所示。
$ git reset HEAD@{1}
现在让我们检查一下我们的提交历史。
$ git log --oneline
我们的 HEAD
又回到了第六次更新
。
简而言之,根据提交 ID 恢复你的 Git 仓库非常容易。如果你想暂时切换到提交,请使用 git checkout
命令。
要恢复到特定的提交,请使用 git reset --hard
命令并指明提交哈希。