我不久前也遇到了类似的问题,我使用交互式变基解决了它。
你需要做的是找到要更改的提交之前的提交哈希值。假设该哈希值为376c762c1b28f927595010e98e4ee82d6bc63de3
git rebase -i 376c762c1b28f927595010e98e4ee82d6bc63de3
然后您会得到一个列表,其中包含提交哈希之后的所有提交以及部分提交消息。
pick 376c762 Commit with wrong file
pick e145ef2 Fourth before last commit
pick d969e5b Third before last commit
pick 7b92c09 Second before last commit
pick db1dea3 First before last commit
pick ff120d6 Most recent commit message
...
在这里你可以将提交前的单词从pick
改为edit
。在我们的情况下:
edit 376c762 Commit with wrong file
然后您保存文件并退出,如果您使用nano,则按Ctr + X
,Y
和Enter
。
然后您将回到命令行,就在提交后。您可以执行以下操作来撤销上一次提交。文件和您将拥有未提交的更改。提示将显示当前提交哈希的前7个字符。
git restore HEAD^
接着你可以从提交中删除/添加/更改文件,添加并提交这个变更。然后为了继续rebase操作,你需要进行如下命令:
get rebase --continue
如果在以后的提交中更改了相同的文件,则可能会出现冲突,您必须在继续之前解决并提交--continue
。当重新定位完成时,您将会得到