关于git rebase(变基) 的使用
rebase的作用有2个:
- 可以使本地的多次提交记录合并为一个(历史简洁)。
- 可以使开发分支更新为最新(既合并此开发分支的来源分支上的最新修改,或者是要合并的目标分支已发生变更,此时需要跟新被人已提交的修改到开发分支上),避免开发分支合并到master或其他公共分支上时造成的提交记录开叉混乱。
背景:在dev分支上做3次提交记录,然后此时t1分支有别人已提交代码,但是时间在dev修改之后。
-
git checkout dev #在dev分支上操作
-
git rebase t1 #待会要往t1上合并dev分支,故先把t1已提交代码合并到dev上,不管时间先后,t1的提交总在dev之前。
-
解决冲突 ,<<<<<<< ======= >>>>>>> 有两部分,< = 之间的是t1上别人已提交的,= >之间的是dev上的,手动解决冲突。
-
、git add -u # -u 保存修改、删除到暂存区,还有-A 修改、新建、删除 ,git add . # 保存修改、新建
-
git rebase --continue ,冲突时一个一个出现的,解决完所有冲突后,t1的最新提交就合到了dev。
-
此时还需要把dev上的3个提交历史融合为一个提交
-
git rebase -i HEAD~3 ,执行此命令之后会出现vi编辑框,3次提交倒叙排列,最上面是最早的,保留最上面的pick 其他的pick都改为squash(挤压),这样3次提交就合为1次提交了(开发分支的提交记录就很简洁)。
-
合并提交的时候可能会有冲突,如果有冲突,需要修改,修改的时候要注意,保留最新的历史,不然我们的修改就丢弃了.
-
修改之后 git add . git rebase --continue 完成。
-
若想放弃压缩 git rebase --abort
-
然后push到origin(远程仓库),再把dev合到t1,完成所有工作。