如何修改现有提交中的特定单词?

时间:2018-01-04 12:15:47

标签: git rebase

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

git log

ac123d commit 1
vr43de commit 2
q6ade6 commit 3

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

2 个答案:

答案 0 :(得分:3)

问题的关键(重点补充)

  

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

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

可能的选择是:

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

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

答案 1 :(得分: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