Git 撤销最后一次提交并推送
在本文中,我们将介绍如何撤销最后一次提交并将更改推送到远程Git存储库中。
阅读更多:Git 教程
为什么需要撤销最后一次提交
有时候,我们在进行Git提交后意识到自己犯了一个错误,或者提交了一些不必要的更改。在这种情况下,我们需要撤销最后一次提交,并将更改从远程存储库中删除或替换为正确的更改。
撤销最后一次提交的方法
使用Git revert命令
Git提供了一个revert命令,可以撤销最后一次提交。这个命令创建一个新的提交,通过将上一个提交的更改反向应用到当前分支来撤销。
要使用revert命令撤销最后一次提交,可以执行以下步骤:
- 首先,使用
git log命令查看提交历史。确认最后一次提交的哈希值。
$ git log
commit c1234567890 (HEAD -> master)
Author: Your Name <your.email@example.com>
Date: Wed Jan 1 12:00:00 2022 +0000
Last commit message
- 使用
git revert命令来撤销最后一次提交。将上一步中确认的提交哈希值替换到下面的命令中。
$ git revert c1234567890
- 执行命令后,Git会打开一个文本编辑器以编辑新的提交消息。你可以保留默认的撤销提交消息,也可以修改为你想要的内容。保存并关闭编辑器。
-
Git会在当前分支上创建一个新的提交,该提交包含了撤销之前提交的更改。可以使用
git log命令验证新的提交是否成功创建,并查看新的提交历史。
使用Git reset命令
另一种撤销最后一次提交的方法是使用git reset命令。这个命令将当前分支的HEAD指针移动到上一个提交,从而撤销最后一次提交。
要使用reset命令撤销最后一次提交,可以执行以下步骤:
- 首先,使用
git log命令查看提交历史。确认最后一次提交的哈希值。
$ git log
commit c1234567890 (HEAD -> master)
Author: Your Name <your.email@example.com>
Date: Wed Jan 1 12:00:00 2022 +0000
Last commit message
- 使用
git reset命令来撤销最后一次提交。将上一步中确认的提交哈希值替换到下面的命令中。
$ git reset c1234567890
- 执行命令后,Git会将当前分支的HEAD指针移动到指定的提交,从而撤销最后一次提交。请注意,该命令只会更改本地分支。
-
如果你希望将更改从远程存储库中删除或替换为正确的更改,你需要使用
git push命令将更改推送到远程存储库。
$ git push --force
注意:使用--force选项在推送时可能会覆盖其他人的更改,谨慎使用。
示例:撤销最后一次提交并推送
让我们通过一个示例来演示如何撤销最后一次提交并将更改推送到远程Git存储库中。
假设我们当前在master分支上,并且我们最后一次提交了一个错误的文件。
- 首先,使用
git log命令查看提交历史
$ git log
commit c1234567890 (HEAD -> master)
Author: Your Name <your.email@example.com>
Date: Wed Jan 1 12:00:00 2022 +0000
Add incorrect file
commit b9876543210
Author: Your Name <your.email@example.com>
Date: Tue Dec 31 12:00:00 2021 +0000
Initial commit
- 确认最后一次提交的哈希值是
c1234567890。 -
使用
git revert命令来撤销最后一次提交。
$ git revert c1234567890
-
Git会打开一个文本编辑器以编辑新的撤销提交消息。保留默认的消息或修改为你想要的内容,并保存关闭编辑器。
-
现在,使用
git log命令再次查看提交历史。
$ git log
commit d9876543210 (HEAD -> master)
Author: Your Name <your.email@example.com>
Date: Thu Jan 2 12:00:00 2022 +0000
Revert "Add incorrect file"
commit c1234567890
Author: Your Name <your.email@example.com>
Date: Wed Jan 1 12:00:00 2022 +0000
Add incorrect file
commit b9876543210
Author: Your Name <your.email@example.com>
Date: Tue Dec 31 12:00:00 2021 +0000
Initial commit
可以看到,Git创建了一个新的提交d9876543210,该提交撤销了之前提交的更改。
- 最后,使用
git push命令将更改推送到远程存储库。
$ git push --force
使用--force选项是为了将新的撤销提交强制推送到远程存储库。
总结
本文介绍了如何撤销最后一次提交并将更改推送到远程Git存储库中。我们讨论了两种方法:使用git revert命令和使用git reset命令。使用git revert创建一个新的撤销提交,而使用git reset将当前分支的HEAD指针移动到上一个提交。在进行任何推送操作之前,请确保理解并谨慎使用--force选项。相信通过本文的指导,你能够轻松地撤销最后一次提交并将更改推送到远程存储库中。
极客教程