git rebase 最常用的操作有两个:
1、变基
本地dev分支修改代码commit后发现远程分支已经有了新的修改,此时需要git pull dev
再git push
推送到远程,此时的提交记录会出现分叉并多一次合并,如果使用git rebase dev
会将本地提交的commit放到最新的远程分支的提交之后,这样提交记录就是一条直线。
2、交互式的rebase
本地开发提交了很多次小版本,在提交到远程的时候可以使用git rebase -i head~n
合并本地的多次提交,修改提交说明,减少提交时多次解决冲突
交互界面有提示说明:
- pick:正常选中
- reword:选中,并且修改提交信息;
- edit:选中,rebase时会暂停,允许你修改这个commit(参考这里)
- squash:选中,会将当前commit与上一个commit合并
- fixup:与squash相同,但不会保存当前commit的提交信息
- exec:执行其他shell命令
在使用git rebase
命令后出现merging 分支,此分支是临时用来解决冲突的分支,在该分支上解决完冲突后使用git rebase --continue
完成冲突合并,关闭该临时分支