在推入Git之前合并多个提交

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

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

  • 你想要做的是在git中被称为“挤压”。 当你这样做的时候有很多选择(太多了?),但是如果你只是想把你所有的提交的提交合并成一个提交,那就这样做:

    git rebase -i origin/master
    

    这会调出你的文本编辑器( -i是“交互式”),看起来像这样的文件:

    pick 16b5fcc Code in, tests not passing
    pick c964dea Getting closer
    pick 06cf8ee Something changed
    pick 396b4a3 Tests pass
    pick 9be7fdb Better comments
    pick 7dba9cb All done
    

    改变所有的picksquash (或s )第一个除外:

    pick 16b5fcc Code in, tests not passing
    squash c964dea Getting closer
    squash 06cf8ee Something changed
    squash 396b4a3 Tests pass
    squash 9be7fdb Better comments
    squash 7dba9cb All done
    

    保存你的文件并退出你的编辑器。 然后将打开另一个文本编辑器,让您将来自所有提交的提交消息合并为一个大提交消息。

    瞧! 谷歌搜索“混帐挤压”会给你所有其他可用选项的解释。


    如果你有很多的提交,你只想压缩最后的X个提交,找到你想要开始压缩的提交的提交ID,并做

    git rebase -i <that_commit_id>
    

    然后按照leopd的回答中的描述进行操作,将所有pick改为squash除第一个之外。


    你可以用git rebase -i来做这件事,传入你想用作'root'的修订版:

    git rebase -i origin/master
    

    将打开一个编辑器窗口,其中显示在origin/master上次提交后所做的所有提交。 您可以拒绝提交,压缩提交到单个提交中,或编辑以前的提交。

    有几个资源可以更好地解释这个问题,并展示其他一些例子:

    http://book.git-scm.com/4_interactive_rebasing.html

    http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html

    是我能找到的前两个好页面。

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

    上一篇: Combining multiple commits before pushing in Git

    下一篇: Git merge the two commit messages into one message