编辑git历史记录

时间:2014-09-13 15:40:53

标签: git git-rewrite-history

在我的git存储库中,我只有主分支,其中包含8个提交。 在提交2我插入了一个错误的类,现在我将在提交2中以这样的方式重写git历史记录我没有错误的类,因此下一个提交没有它。 什么是正确的方法呢?

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以使用此git rebase -i HEAD~7,这将允许您在当前HEAD之前的最后6次提交中interactively rebase

默认情况下,这将打开一个预先填充了一些解释性文本和最后7个提交ID的文本编辑器。您基本上可以按照说明进行操作,并将与错误提交相对应的行更改为以edit开头:

pick f7f3f6d whatever
edit a5f4a0d did something wrong
pick 310154e added foobar.junk and whatever.html
pick d332af2 something else
pick 7e2f413 yadda yadda
...

#
# 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
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

保存并退出后,您的索引将重新回到git commit正在编辑的提交之后的状态。

然后,您应该对其进行编辑以更正它(例如,git commit --amend),并可选择在其上添加新的提交。完成所有操作后,使用此功能继续并重播到其余的(较新的)提交:git rebase --continue

请注意,最后一行可以触发合并冲突;我假设您已经知道如何处理这些问题:)