Git覆盖上次提交

时间:2016-03-11 17:58:14

标签: git

我有一个提交有一些小错误。我不想在新提交中发送错误修复,因为我将发送拉取请求,因此我希望更改尽可能简单。所以我想删除旧的提交,但保留它的更改并在我应用我的错误修复后发送一个新的提交。这可能吗?

2 个答案:

答案 0 :(得分:2)

如果我理解正确,有两种方法。首先很简单,只需使用:

git commit --amend

第二个有点复杂,但更灵活。您无需删除旧提交。您可以使用旧提交之上的错误修复进行新提交。所以,历史将是这样的:

Old commit ---> New commit

现在你可以执行:

git rebase -i HEAD~2

你会看到这样的事情:

pick hash new commit
pick hash old commit with bugs

# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x, exec = run command (the rest of the line) using shell

只需为旧提交写squash而不是pick并保存更改。在此之后,您将编辑用于压缩提交的提交消息,并且两个提交将被压缩为一个。有关这方面的更多信息,您会发现 - 7.6 Git Tools - Rewriting History

答案 1 :(得分:1)

修改是您正在寻找的。它只是添加了对先前提交的更改。

git commit --amend