如何修改旧的Git提交?

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

  • 如何修改git中的指定提交? 10个答案

  • git rebase -i HEAD^^^
    

    现在用edite标记你想修改的那个(替换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撤销),其与之前的承诺。 保存并退出编辑器并按照说明进行操作。

    链接地址: http://www.djcxy.com/p/23419.html

    上一篇: How to amend older Git commit?

    下一篇: .gitignore not ignoring subdirectory, tried it all