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

时间:2011-10-28 16:43:15

标签: git

我犯了两次错误。如何恢复两个提交并只提交好东西?

3 个答案:

答案 0 :(得分:13)

首先,git reset HEAD~2放弃前两个提交,同时完全保留工作树。 然后,只需创建一个包含所需内容的新提交(例如,使用git add s然后git commit)。

请参阅Scott Chacon的Reset Demystified,了解常常令人困惑的git reset comamnd的详细信息。

答案 1 :(得分:12)

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

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

答案 2 :(得分:0)

在新的提交中还原更改

如果您想完全撤消提交并将其删除,请像其他答案一样使用rebasereset

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

git revert --no-commit HEAD~1^..HEAD

这将还原最近两次提交中的所有更改(从HEADHEAD~1)。您可以通过检查状态或diff并提交还原来确保一切正常:

git status # or git diff
git commit -m "Reverted the last two commits"