这个问题在这里已有答案:
我被推动了我的改变。这是最近2次提交之前的事情。我的树看起来很像,
git log
ac123d commit 1
vr43de commit 2
q6ade6 commit 3
我必须在提交3中进行小的更改,这只是一个单词替换。我需要编辑第3次提交而不产生额外的提交。有办法吗?还是可以接受的?
问题的关键(强调增加)
我需要编辑第3次提交而不产生额外的提交。有办法吗?
不,这是不可能的。无法以任何方式更改提交。提交的ID的计算方式是,对提交内容的任何更改都会更改该提交的ID以及每次提交的后续提交,如果您“更改”提交的ID,则表示您正在创建新提交(虽然可能与原件非常相似)。
可能的选择是:
1)在下次提交中解决问题,并接受历史记录将始终包含这些先前提交中的错误单词
2)重写历史记录,要求清理已经推送现有提交的远程克隆的所有克隆
尝试:
git rebase -i <sha or tag before the commit you wish to update>
这将打开一个编辑器,您将在其中指定要执行的操作,然后在提交3上,您可以更新提交
git commit --amend
然后git rebase --continue
将重新启动rebase过程。然后你会用
git push -f
更新服务器端(小心这有一些缺点,主要是如果其他开发人员拉了这个分支)
我建议你先创建一个分支并在分支上练习。