修改一个不是以前提交的提交

我经常会有如下的工作stream程:

  1. 将更改提交给一组文件
  2. 将更改提交到不同的文件组
  3. 意识到我错过了属于第一次提交的一些更改
  4. 诅咒

我不能使用git commit --amend因为它不是我需要改变的最近的提交。 在不碰第二个提交的情况下添加更改的最佳方法是什么?

你可以使用git rebase来解决这个问题。 运行git rebase -i sha1~1其中sha1是您想要更改的提交散列。 find您想要更改的提交,并用“编辑”replace“select”,如基本编辑器的注释中所述。 当你从那里继续时,你可以编辑提交。

请注意,这将改变该提交的sha1以及所有的孩子 – 换句话说,这将重写这一点的历史。 你可以打开这样的仓库,但是如果你没有推,那就不是什么大事了。

如果你没有推上游,你可以:

 git format-patch -1 git reset --hard HEAD~1 //change git commit --amend git am patchname