在我的git存储库中,我只有主分支,其中包含8个提交。 在提交2我插入了一个错误的类,现在我将在提交2中以这样的方式重写git历史记录我没有错误的类,因此下一个提交没有它。 什么是正确的方法呢?
提前致谢。
答案 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
。
请注意,最后一行可以触发合并冲突;我假设您已经知道如何处理这些问题:)