如何修改旧的Git提交?
这个问题在这里已经有了答案:
git rebase -i HEAD^^^
现在用edit
或e
标记你想修改的那个(替换pick
)。 现在保存并退出。
然后,现在进行更改
git add -A
git commit --amend --no-edit
git rebase --continue
如果要添加额外的删除,请从commit命令中删除选项。 如果您想调整消息,请忽略--no-edit
选项。
我准备了我想要修改一个更老的承诺,并且很惊讶地看到rebase -i抱怨说我有未确定的变化。 但是我不想再指定更旧提交的编辑选项。 所以解决方案非常简单直接:
git rebase -i <commit you want to amend>^
- 注意^
让你在文本编辑器中看到所述提交 你会得到这样的东西:
pick 8c83e24 use substitution instead of separate subsystems file to avoid jgroups.xml and jgroups-e2.xml going out of sync
pick 799ce28 generate ec2 configuration out of subsystems-ha.xml and subsystems-full-ha.xml to avoid discrepancies
pick e23d23a fix indentation of jgroups.xml
现在要结合e23d23a和8c83e24,你可以改变线的顺序,并使用这样的壁球:
pick 8c83e24 use substitution instead of separate subsystems file to avoid jgroups.xml and jgroups-e2.xml going out of sync
squash e23d23a fix indentation of jgroups.xml
pick 799ce28 generate ec2 configuration out of subsystems-ha.xml and subsystems-full-ha.xml to avoid discrepancies
编写并退出文件,您将会看到一个编辑器来合并提交消息。 这样做并保存/退出文本文档
信贷去:http://git-scm.com/book/en/Git-Tools-Rewriting-History还有其他有用的演示git魔术。
你可以使用git rebase
来重写提交历史记录。 这可能会对您的更改造成潜在的破坏性,因此请谨慎使用。
首先将您的“修改”更改作为正常提交提交。 然后从最早的提交的父项开始进行交互式重新分页
git rebase -i 47175e84c2cb7e47520f7dde824718eae3624550^
这将启动你的编辑与所有提交。 对它们重新排序,以便您的“修改”提交低于您要修改的提交。 然后更换上线的第一个字的“修正”与承诺s
将结合(S撤销),其与之前的承诺。 保存并退出编辑器并按照说明进行操作。