工具操作入口
idea里合并代码选项提供了rebase和merge,其中有一个rebase xx onto yy,这个的意思是把xx分支进行rebase,参照的分支是yy分支最新记录重新变更提交记录,开始的开始点是公共的第一个祖先节点,使变更记录变得简洁;
如下:可以理解成把dev1分支的工作内容重新基于(关键字onto)master分支的最新成果,master的变更内容会在dev1分支上重放,并生成提交记录;该过程只影响dev1分支的内容,但不影响master分支内容;
在做了这个操作后,还需要使用push(git push --force-with-lease)命令将变更的历史记录推送到远端dev1分支才会生效;
弊端困扰
git rebase有一个个人觉得操作上很不友好的就是:rebase 过程中同一个冲突点很可能反复出现多次,这不是操作失误,而是 rebase 的工作机制决定的。
rebase 会把你分支上的每个提交逐个重放到目标分支上,每重放一个提交都会独立做一次冲突判断。如果多个提交都改了同一文件的同一区域,那么每个提交在重放时都可能触发冲突,你就得反复解决同一处问题。
比如你的分支有 3 个提交都改了 test.txt,而目标分支也改了这个文件,rebase 时就可能连续 3 次报同一个文件的冲突,每次都要手动处理一遍。
代码合并
如果后续还需要把dev1上的内容合并到master上进行打包发布,则还需切换到master分支将dev1的变更merge到master分支;
over~~