Idea的环境下git的rebase(变基)
背景
团队合作中可能会出现多次修改自己模块的代码,然后合并的时候的提交记录看起来会比较繁杂
思路
把分支1的提交记录压缩为一条,然后在主分支cherryPick刚刚压缩的提交,实现整合
操作
选择变基基点
操作变基
将需要进行操作的提交记录进行操作
操作项
-
reword(改写): 这一类commit也会保存下来,不过在保存下来之前会有一次修改commit message的机会
-
edit(暂停编辑):这一类的commit也会直接保存下来,不过,当合并到这种类型的commit时,整个合并经常会暂停下来,你可以重新修改这次commit中的变动内容,比如给这个commit继续新增一些代码改动、或者修改commit message,然后git add(不要忘记 git add了), 再继续使用git rebase —continue,来继续rebase操作。
-
squash(压缩):标记为squash的commit在rebase操作完成后不会保留,它会与之相邻的上一次commit进行合并。同时它的commit message也会与上一次commit的message合并。
-
fixup(修补): 这类commit不会保留,会直接与相邻的上一次commit合并,与squash不同之处在于,它的commit message回直接丢弃,即这次commit会被视为对前一次commit的一次小的补充修改(fixup),commit message就以前一次为准
-
drop(删除):标记为skip的commit会直接被删除,就相当于这次commit从来没有发生过。同时,这个commit中涉及的所有代码修改全部会被删除。
不进行操作
pick(选取): 标记为pick的commit会在rebase操作后会直接保留下来,不做任何改动,也不会合并,最上面的commit最好标记为这一类
这里,我选择Squash后再StartRebase
推送
发起推送之后,会弹出提示框,push的时候它认为你本地的变更与远程版本不一致
-
若选择rebase的话,就会发现恢复到rebase操作之前的记录
-
若选择merge的话,可以看到处理的结果,原先的2条提交信息还在,只是会新生成一个整合后的提交。
我们选择marge
看到刚刚的操作成功提交
切换分支
checkOut为将要合并的分支
这里,我合并到master
保证我们最终合并分支为master,进行合并分支为此前操作分支
优选
进行操作
双击master即可看见刚才操作生效
此时确保无误即可推送
解决冲突(有冲突才会弹出提示框)
把需要保留的代码保留推送
解决完即可强制推送