如何修改现有提交中的特定单词? [重复]

问题描述 投票:-2回答:2

这个问题在这里已有答案:

我被推动了我的改变。这是最近2次提交之前的事情。我的树看起来很像,

git log

ac123d commit 1
vr43de commit 2
q6ade6 commit 3

我必须在提交3中进行小的更改,这只是一个单词替换。我需要编辑第3次提交而不产生额外的提交。有办法吗?还是可以接受的?

git rebase
2个回答
3
投票

问题的关键(强调增加)

我需要编辑第3次提交而不产生额外的提交。有办法吗?

不,这是不可能的。无法以任何方式更改提交。提交的ID的计算方式是,对提交内容的任何更改都会更改该提交的ID以及每次提交的后续提交,如果您“更改”提交的ID,则表示您正在创建新提交(虽然可能与原件非常相似)。

可能的选择是:

1)在下次提交中解决问题,并接受历史记录将始终包含这些先前提交中的错误单词

2)重写历史记录,要求清理已经推送现有提交的远程克隆的所有克隆


1
投票

尝试:

git rebase -i <sha or tag before the commit you wish to update>

这将打开一个编辑器,您将在其中指定要执行的操作,然后在提交3上,您可以更新提交

  • 如果您想要更改提交消息,请用reword替换pick
  • 如果要更改提交的文件,请通过编辑替换pick。 git rebase执行将停止,您将有机会进行更改。完成修正后,使用git commit --amend然后git rebase --continue将重新启动rebase过程。

然后你会用

git push -f 

更新服务器端(小心这有一些缺点,主要是如果其他开发人员拉了这个分支)

我建议你先创建一个分支并在分支上练习。

还可以看看git doc on interactive rebase

© www.soinside.com 2019 - 2024. All rights reserved.