我提交了一行代码,然后我提交了它(“Changed Project Name”)。几分钟后,我意识到我的改变是错误的。所以我再次更改它,并再次提交(“更正的项目名称”)。
我有一个无用的提交,我想将它从历史中删除。所以我这样做了:
git rebase HEAD~6
我删除了提交“已更改的项目名称”。但是当我保存rebase文件时,我收到了这条消息:
error: could not apply 6df1da5... Corrected Project Name
When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To check out the original branch and stop rebasing run "git rebase --abort".
Could not apply 6df1da5... Corrected Project Name
我该如何解决这个问题?
答案 0 :(得分:2)
通过删除git rebase -i
的提交,你告诉git放弃该提交的更改。
但是,您的下一次提交会基于这些更改构建(因为它会更改同一行)。因此,删除先前的提交会导致合并冲突。这就是git告诉你的错误信息。
当然,您不希望丢弃来自错误提交的更改 - 无论如何您已经还原了它。你只是想让它从历史中消失。要做到这一点,你需要压缩这两个提交,即将它们合并为一个提交。
要做到这一点:
git rebase --abort
)git rebase HEAD~6
现在git会将两个提交合并为一个提交,看起来好像你已经直接执行了正确的更改: - )。
答案 1 :(得分:2)
您的历史似乎如下:
* HEAD Corrected Project Name
* HEAD~1 Changed Project Name
* HEAD~2 some other commit
* ...
如果你只使用HEAD撤消HEAD~1的更改,你可以使用git reset --hard HEAD~2
丢弃两个提交。这导致:
* HEAD some other commit
* ...
如果最后两次提交引入了一些重要更改,并且您只想将它们组合在一起,则可以使用git rebase -i
并以交互方式压缩两次提交,或使用git reset --soft HEAD~2; git commit
。两者都会导致:
* HEAD Combined commit
* HEAD~1 some other commit
* ...