撤消最后的 git 提交推送或最后 2
To undo the last git commit push or the last 2
我们如何撤消最后的 git 提交推送或最后 2 次推送,通过简单引用那个数字?即例如
git revert -n1
git revert -n2
git reset -n2
我很git菜鸟。谢谢
这个问题的答案在很大程度上取决于你到底想要什么,但我会给你一些一般信息。
要真正撤销提交,您可以使用git reset
。这将把你的分支的 HEAD 放在 2 次提交前的位置,让你的文件保持现在的样子:
git reset HEAD~2 --soft
如果你想让文件恢复到原来的样子,你可以使用--hard
:
git reset HEAD~2 --hard
现在,如果您已经推送了提交,这会有点问题,因为 Git 应该只添加提交 - 从不删除。因此,如果您尝试推送之前的提交,您将收到一条错误消息,提示您处于远程状态。
如果您确定要这样做,可以通过将 --force
传递给 git push
来强制更改历史记录。如果您与其他人合作,这可能会产生问题:当他们尝试拉取时,如果他们已经有了您要删除的提交,他们也会收到错误,并且需要将 --force
传递给 git pull
.
为了允许在不更改提交历史记录的情况下还原事物,git revert
存在:它创建一个新的提交,它的作用与还原的提交相反。这会将更改保留在提交日志中,但实际文件将与之前一样。如果你想要这个,你可以 运行:
git revert HEAD~2..HEAD
这将为 HEAD
(您的最后一次提交)和 HEAD~1
(您的倒数第二个提交)创建反转提交,将文件保留为 2 次提交前的状态。如果你只想恢复一个提交,你可以只指定那个。要仅还原最新的提交,您可以使用:
git revert HEAD
我们如何撤消最后的 git 提交推送或最后 2 次推送,通过简单引用那个数字?即例如
git revert -n1
git revert -n2
git reset -n2
我很git菜鸟。谢谢
这个问题的答案在很大程度上取决于你到底想要什么,但我会给你一些一般信息。
要真正撤销提交,您可以使用git reset
。这将把你的分支的 HEAD 放在 2 次提交前的位置,让你的文件保持现在的样子:
git reset HEAD~2 --soft
如果你想让文件恢复到原来的样子,你可以使用--hard
:
git reset HEAD~2 --hard
现在,如果您已经推送了提交,这会有点问题,因为 Git 应该只添加提交 - 从不删除。因此,如果您尝试推送之前的提交,您将收到一条错误消息,提示您处于远程状态。
如果您确定要这样做,可以通过将 --force
传递给 git push
来强制更改历史记录。如果您与其他人合作,这可能会产生问题:当他们尝试拉取时,如果他们已经有了您要删除的提交,他们也会收到错误,并且需要将 --force
传递给 git pull
.
为了允许在不更改提交历史记录的情况下还原事物,git revert
存在:它创建一个新的提交,它的作用与还原的提交相反。这会将更改保留在提交日志中,但实际文件将与之前一样。如果你想要这个,你可以 运行:
git revert HEAD~2..HEAD
这将为 HEAD
(您的最后一次提交)和 HEAD~1
(您的倒数第二个提交)创建反转提交,将文件保留为 2 次提交前的状态。如果你只想恢复一个提交,你可以只指定那个。要仅还原最新的提交,您可以使用:
git revert HEAD