在推入Git之前合并多个提交
这个问题在这里已经有了答案:
你想要做的是在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
改变所有的pick
到squash
(或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