将 Git 存储库恢复为之前的提交
本文概述了如何将 Git 存储库恢复到以前的提交。 这是我们将介绍的三种方法。
- 暂时回滚到之前的提交
- 删除未发布的提交
- 撤消已发布的提交
暂时回滚到以前的提交
我们的第一个方法涉及使用 git checkout 命令。
这将允许我们回到之前的 Git 提交,而无需重写我们分支中的提交历史。 这是一个例子。
假设这是我们的提交历史,我们如何回到三个提交? (即 HEAD~3)
我们可以运行 git checkout
命令,如下图所示。
$ git checkout HEAD~3
如上所示,我们目前处于分离模式。 我们可以在不影响任何分支的情况下进行更改、试验和提交更改。
在分离 HEAD 模式下要小心,因为您可能会丢失所做的更改。 要保留这些更改,请创建一个新分支,如下所示。
$ git checkout -b Detached
您可以随意命名您的分支机构。
删除未发布的提交
未发布的更改只是您尚未推送到远程存储库的提交。
您可以使用 git reset 命令删除提交以将本地存储库回滚到以前的状态。 这是一个例子。
如果我们想硬删除我们在上一节中讨论的三个提交而不是临时切换怎么办? 我们将如何着手?
我们将运行 git reset
命令来硬删除这三个提交,如下所示。
$ git reset --hard HEAD~3
上面的命令将取消三个提交和任何未提交的更改。 如果要保留未提交的更改,请确保运行 git stash 命令。
请注意
,仅当您尚未将更改推送到远程存储库时才应使用此方法,尤其是当它是共享存储库时。
撤消已发布的提交
在上面的部分中,我们已经了解了如何删除未发布的提交。 如果您已经将提交推送到远程存储库怎么办?
git reset --hard
命令具有破坏性,可能会打乱项目的时间表,因为多个开发人员正在处理同一个项目。
撤消已发布提交的最安全方法是使用 git revert 命令。 这不会重写提交历史但会还原它并创建一个新的提交。
这将使其他开发人员更容易理解正在发生的事情。
要还原三个提交,我们将运行:
$ git revert --no-commit HEAD~3..HEAD
–no-commit 标志将允许我们为所有三个还原的提交创建一个提交消息。 不包含该标志将迫使您为每个提交创建一个提交消息,这看起来很乱并且会使您的存储库混乱。
简而言之,在 Git 中可以通过三种方式恢复到之前的提交。 这完全取决于您的情况下恢复的定义。
如果你想暂时切换到以前的提交,请使用 git checkout
命令。 git reset --hard
应保留用于未发布的更改,而 git revert
命令最适合已发布的提交。
本文概述了如何将 Git 存储库恢复到以前的提交。 这是我们将介绍的三种方法。
- 暂时回滚到之前的提交
- 删除未发布的提交
- 撤消已发布的提交
暂时回滚到以前的提交
我们的第一个方法涉及使用 git checkout 命令。
这将允许我们回到之前的 Git 提交,而无需重写我们分支中的提交历史。 这是一个例子。
假设这是我们的提交历史,我们如何回到三个提交? (即 HEAD~3)
我们可以运行 git checkout
命令,如下图所示。
$ git checkout HEAD~3
如上所示,我们目前处于分离模式。 我们可以在不影响任何分支的情况下进行更改、试验和提交更改。
在分离 HEAD 模式下要小心,因为您可能会丢失所做的更改。 要保留这些更改,请创建一个新分支,如下所示。
$ git checkout -b Detached
您可以随意命名您的分支机构。
删除未发布的提交
未发布的更改只是您尚未推送到远程存储库的提交。
您可以使用 git reset 命令删除提交以将本地存储库回滚到以前的状态。 这是一个例子。
如果我们想硬删除我们在上一节中讨论的三个提交而不是临时切换怎么办? 我们将如何着手?
我们将运行 git reset
命令来硬删除这三个提交,如下所示。
$ git reset --hard HEAD~3
上面的命令将取消三个提交和任何未提交的更改。 如果要保留未提交的更改,请确保运行 git stash 命令。
请注意
,仅当您尚未将更改推送到远程存储库时才应使用此方法,尤其是当它是共享存储库时。
撤消已发布的提交
在上面的部分中,我们已经了解了如何删除未发布的提交。 如果您已经将提交推送到远程存储库怎么办?
git reset --hard
命令具有破坏性,可能会打乱项目的时间表,因为多个开发人员正在处理同一个项目。
撤消已发布提交的最安全方法是使用 git revert 命令。 这不会重写提交历史但会还原它并创建一个新的提交。
这将使其他开发人员更容易理解正在发生的事情。
要还原三个提交,我们将运行:
$ git revert --no-commit HEAD~3..HEAD
–no-commit 标志将允许我们为所有三个还原的提交创建一个提交消息。 不包含该标志将迫使您为每个提交创建一个提交消息,这看起来很乱并且会使您的存储库混乱。
简而言之,在 Git 中可以通过三种方式恢复到之前的提交。 这完全取决于您的情况下恢复的定义。
如果你想暂时切换到以前的提交,请使用 git checkout
命令。 git reset --hard
应保留用于未发布的更改,而 git revert
命令最适合已发布的提交。
本文概述了如何将 Git 存储库恢复到以前的提交。 这是我们将介绍的三种方法。
- 暂时回滚到之前的提交
- 删除未发布的提交
- 撤消已发布的提交
暂时回滚到以前的提交
我们的第一个方法涉及使用 git checkout 命令。
这将允许我们回到之前的 Git 提交,而无需重写我们分支中的提交历史。 这是一个例子。
假设这是我们的提交历史,我们如何回到三个提交? (即 HEAD~3)
我们可以运行 git checkout
命令,如下图所示。
$ git checkout HEAD~3
如上所示,我们目前处于分离模式。 我们可以在不影响任何分支的情况下进行更改、试验和提交更改。
在分离 HEAD 模式下要小心,因为您可能会丢失所做的更改。 要保留这些更改,请创建一个新分支,如下所示。
$ git checkout -b Detached
您可以随意命名您的分支机构。
删除未发布的提交
未发布的更改只是您尚未推送到远程存储库的提交。
您可以使用 git reset 命令删除提交以将本地存储库回滚到以前的状态。 这是一个例子。
如果我们想硬删除我们在上一节中讨论的三个提交而不是临时切换怎么办? 我们将如何着手?
我们将运行 git reset
命令来硬删除这三个提交,如下所示。
$ git reset --hard HEAD~3
上面的命令将取消三个提交和任何未提交的更改。 如果要保留未提交的更改,请确保运行 git stash 命令。
请注意
,仅当您尚未将更改推送到远程存储库时才应使用此方法,尤其是当它是共享存储库时。
撤消已发布的提交
在上面的部分中,我们已经了解了如何删除未发布的提交。 如果您已经将提交推送到远程存储库怎么办?
git reset --hard
命令具有破坏性,可能会打乱项目的时间表,因为多个开发人员正在处理同一个项目。
撤消已发布提交的最安全方法是使用 git revert 命令。 这不会重写提交历史但会还原它并创建一个新的提交。
这将使其他开发人员更容易理解正在发生的事情。
要还原三个提交,我们将运行:
$ git revert --no-commit HEAD~3..HEAD
–no-commit 标志将允许我们为所有三个还原的提交创建一个提交消息。 不包含该标志将迫使您为每个提交创建一个提交消息,这看起来很乱并且会使您的存储库混乱。
简而言之,在 Git 中可以通过三种方式恢复到之前的提交。 这完全取决于您的情况下恢复的定义。
如果你想暂时切换到以前的提交,请使用 git checkout
命令。 git reset --hard
应保留用于未发布的更改,而 git revert
命令最适合已发布的提交。