重写已经与其他开发人员共享的历史记录通常是不好的做法。你可能应该用你的错误修复做出一个新的提交,然后推送它而不是重写历史。
也就是说,是的,您可以修改过去的提交。假设我想在这里更改提交 B:
* 909debb (HEAD, master) C
* 5a12c7f B
* cfe7820 A
我最喜欢的方法是使用交互式变基。
% git rebase -i HEAD~2
这将打开一个编辑器,其中包含以下内容:
pick 5a12c7f B
pick 909debb C
pick
将要更改edit
的提交更改为:
edit 5a12c7f B
pick 909debb C
写文件。
% git rebase -i HEAD~2
Stopped at 5a12c7f... B
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
然后进行更改:
% git add <files>
% git commit --amend -m 'Updated B'
% git rebase --continue
现在我的历史看起来像这样:
* bf4a3a7 (HEAD, master) C
* b79ab6f Updated B
* cfe7820 A