如何撤消我上次的git add / commit?

时间:2010-12-21 10:27:19

标签: git repository commit undo

我编辑了一个文件并做了:

git add file.py
git commit -m 'fixed bug'

然后我编辑了另一个文件并执行了一个小错误修复。我不希望两个提交,一个接一个,显示'错误修复'。我想要一个提交'bug fixes'。

如何撤消上次添加/提交并更改第一个提交消息?

我正在查看git resetgit revertgit undo命令,但我不想用猜测来搞砸我的回购

编辑:了解如何操作:http://www.gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html

1 个答案:

答案 0 :(得分:33)

如果您已提交第二次更改,请先重置:

git reset HEAD^

现在您的HEAD处于首次提交状态,并且本地文件的内容未更改。

git add <the file(s) for the second bug fix>
git commit --amend -m'bug fixes'

如果要为第二个错误修复包含所有跟踪和更改的文件,您可以像往常一样运行它:

git commit -a --amend

修改提交就是这样:

  • 将索引中的更改添加到上一次提交中(因此需要git add-a
  • 允许您更改提交消息

但是要小心:如果你分发了第一个提交,其他人的回购会变得奇怪。您不应该更改其他人提取的提交。


您也可以使用git merge --squash,这感觉更合乎逻辑,但不一定更容易。使用它来合并包含两次提交的分支,直到前一次提交。

Squashing也适用于git rebase