如果你不是你最近的那些,就要压缩你的提交

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

  • 压缩我最后一个X使用Git 23答案一起提交

  • 这可以通过做一个交互式底座来完成。

    如果您在提交A处有分支master ,然后用提交BCDEF创建了分支my-branch 。 你想挤压BCDB'

    确保您的当前分支是my-branch ,并启动交互式分配:

    git rebase -i master
    

    这将打开您的编辑器,并提供将要执行的提交列表。 每行表示一次提交,并且该行的第一个单词表示要对该提交执行的命令。 将第一个提交( B )作为pick ,并将后两个提交( CD )的命令更改为squash 。 保存并关闭编辑器。

    在git完成处理提交BCD ,一个新的编辑器将打开并提交新提交B'提示消息。 这将包含来自原始提交的提交消息的组合,但您可以将其更改为任何您想要的内容。 一旦提交信息是你想要的,保存并关闭编辑器。

    一旦混帐处理完提交的其他分支my-branch ,承诺在my-branch将是B'E ,和F

    请注意,如果您尚未推送提交,则应该只进行重新绑定。 重新激活会改变提交的哈希,如果其他人已经提交了原始提交,这会导致问题。


    git rebase -i HEAD~6
    

    然后在交互式编辑器中,将squash (可以缩写为s )放在要压缩的提交前面,并将其他人作为pick

    例:

    pick 043af87 message
    s    8c0fa0e message
    s    b6c7116 message
    pick c5d91a3 message
    pick f20898f message
    pick edcbad2 message
    

    如果您尚未发布该分支,则可以重写其历史记录,而不会产生任何副作用。

    假设历史是ABCDEFGHI ,目标是压扁CDEFG

    git checkout -b squash_branch G
    git reset C --soft
    git commit
    git cherry-pick H I
    

    新的历史将是ABS-H'-I'

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

    上一篇: How to squash your commits when not being your recent ones

    下一篇: git squash last n commits without interactive rebase