在 Git 中撤消上次提交
在使用 Git 时,我们会遇到各种情况,我们故意想要撤消最后一次提交,因为我们想广泛地重新提交它,甚至由于我们过去犯的错误而将它完全删除。试想一下,如果 Git 有简单的 Undo Last Commit
选项,甚至是最流行的键盘快捷键,会有多少人会使用它。
我们有一个简单而强大的命令,与上面讨论的相同。该命令非常强大,因为它丢弃了最后一次提交并将 HEAD(当前分支)恢复到在该仓库中进行最后一次提交之前的状态。对于新的 Git 用户来说,这可能有点令人困惑,但是一旦我们掌握了它,它对我们的 Git 工具箱来说就会变得如此简单。
在 Git 中撤消上次提交(长版本)
首先,打开所需的终端,然后运行 Git status。这将向我们展示我们的仓库的状态,包括我们所做的所有提交的列表。大多数时候,它说有三个提交。
第一个是对名为 master
的分支的提交,这是我们当前在仓库中的分支。第二个是对名为 Dev
的新分支的提交,最后,第三个是对另一个名为 NewDev
的分支的提交。
最后两个很有趣,因为它们是我们想要撤消的。我们想丢弃我们对 Dev
和 NewDev
所做的提交,并将 HEAD 恢复到提交之前的状态。让我们运行下面的命令,看看之后会发生什么:
$ git reset --hard
HEAD 现在处于之前的状态。正如我们所看到的,新的 HEAD 指针现在回到了下一次提交。请注意,不再有标记为 Dev
的提交。此外,标记为 NewDev
的提交返回到下一个提交
。
在 Git 中撤消上次提交(短版)
如果我们想撤消最后一次提交,请确保我们位于要撤消提交的分支上,然后运行 git reset –hard。如果我们想撤消当前分支上的最后一次提交,请确保我们在 master
上,然后运行以下命令。
git reset --hard origin/master.
只有当我们完全确定不再需要这些更改时,才能应用上述程序。但反过来说,如果我们需要将这些更改作为工作副本中未提交的本地更改,那么对于这种情况,reset
命令是我们解决此问题的方法:
$ git reset --soft HEAD~1
reset
会将我们当前的 HEAD 分支撤消到特定点。在我们上面提到的示例中,我们命令返回到最近撤消之前的最后一次提交 - 有利地创建我们最后一次未完成的提交。 --soft
标志确保恢复未完成的修订中的更改。
Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.
LinkedIn