实际的团队开发工作中,如果每个人提交的代码都很频繁,会造成提交记录非常乱,这时可以通过rebase命令合并多次提交记录。
git rebase: 将当前分支上的提交内容转移到另外一个分支顶部。
用法1 合并提交记录
例如,合并最近的两次提交记录:
shell
➜ git rebase -i Head~2➜ git rebase -i Head~2用法2 分支合并
git merge的时候会携带分支的各种提交信息,可能一定程度上会污染主分支。git rebase不会。
shell
git:(feature1) git rebase master|git:(feature1) git rebase master|做了哪些操作
首先,git会把feature1分支里面的每个commit取消掉;
其次,把上面的操作临时保存成patch文件,存在.git/rebase目录下;
然后,把feature1分支更新到最新的master分支;
最后,把上面保存的patch文件应用到feature1分支上;


尽量保证需要合并的分支只有自己在开发,比如A、B两个人同时在开发,A执行了rebase操作,改变了提交的哈希值,B再pull的时候就会丢失提交记录。
与squash的区别
git squash commits主要用于合并连续的提交,使仓库历史更简洁。git rebase主要用于重写分支的提交历史,可以合并或者重新排序提交。
需要注意的是,使用 git rebase 可能会改变提交的哈希值,因此应该谨慎使用,并且只在没有共享的分支上使用。