开发过程中会遇到一个新功能或者较大的优化需求,通常情况下是从主分支新切出来一个分支单独做这项开发。
例如,今天是 1号,从本地主分支dev上切出一个分支,命名为feat-tree,用来专门开发一个 树状结构列表。
啦啦啦,到了 3号,树状列表开发完成了。
但是这个期间,并不可能只做这一项开发,还会开发一部分提交个记录,中途切换回dev做些其他事。
到了3号,这时候的feat-tree分支上存在多个提交记录, 本地dev和远程dev保持同步,也有很多自己和别人的提交记录,那么此时本地dev和当时feat-tree分支切出去基于的dev就不一致了。
因此流程分三步走。
1、合并多条提交记录(以3条记录为例)
在feat-tree分支上,执行git rebase -i HEAD~3
之后,终端自动进入vm编辑器。
点击 i
进入编辑模式,光标移至不用保留的提交记录上,delete
删除pick
,改成s
。
完成之后退出vm编辑器,点击Esc
,输入 :wq
。
终端再次自动进入vm编辑器。
依旧是i
进入编辑模式,在不需要保留的提交记录前输入#
,将其注释掉。完成之后退出vm编辑器。
2、合并最新本地主分支
在feat-tree分支上,执行git rebase dev
,将本地dev的最新代码合并到feat-tree分支上。
这就是因为当时feat-tree分支切出去基于的dev和现在的dev不一致了,先合并dev不会出现冲突。
3、合并新切分支
切回到dev分支上,现在本地dev上的代码和feat-tree分支上的代码,除了你新开发的,其他都保持一致了。直接执行git rebase feat-tree
,将新开发的代码合并至本地主分支。
最后,本地dev推送到远程仓库,新切分支就可以功成身退了,删除也好忽略也行。