如何恢复两个提交并只提交好东西?

Dam*_*mir 14 git

我两次做错了.如何恢复两个提交并只提交好东西?

Emi*_*Sit 17

首先,git reset HEAD~2丢弃前两个提交,同时完全保留工作树.然后,只需使用您想要的内容创建一个新提交(例如,使用git adds然后git commit).

有关经常令人困惑的comamnd 的详细信息,请参阅Scott Chacon的重置揭秘git reset.


Nou*_*him 14

您可以执行a git rebase -i HEAD~2然后使用该界面丢弃此后的"错误提交"并清理历史记录.然而,这会改变项目历史,如果您已经推动(以及其他人推动)您的更改,那么可能会遇到一些社会问题.

另一种选择是git revert这些变化.然后将2个新提交添加到历史记录中,这使得您不希望在项目历史记录中明确显示这两个提交.不太干净但更容易使用.


She*_*yar 6

在新的提交中恢复更改

如果您想完全撤消提交并删除它们,请使用rebasereset像其他答案建议的那样。

但有时,您无法修改 git 历史记录(例如推送到远程受保护分支后)。在这种情况下,你最好的选择是git revert

git revert --no-commit HEAD~1^..HEAD
Run Code Online (Sandbox Code Playgroud)

这将恢复最近两次提交(从HEADHEAD~1)中的所有更改。您可以通过检查状态或差异并提交恢复来确保一切看起来都很好:

git status # or git diff
git commit -m "Reverted the last two commits"
Run Code Online (Sandbox Code Playgroud)