实际的团队开发工作中,如果每个人提交的代码都很频繁,会造成提交记录非常乱,这时可以通过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
可能会改变提交的哈希值,因此应该谨慎使用,并且只在没有共享的分支上使用。