工作场景:某项目有master分支和dev分支,dev分支原本是从master分叉而来的,dev分支不断延伸,在这过程中master分支已经有了新的提交;现在问题是,我需要将dev分支与master分支同步,也就是说dev分支现在要将master分支最新的提交同步到dev这边来,使得dev的开发时刻是建立在最新的master基础上的。
关键词概括:同步主分支
跳坑指南:在dev分支上,直接git pull origin master (这相当于拉取远程master的最新提交到本地dev,并且与dev分支merge)
温馨提示:由于merge会在dev产生分叉提交历史,为了达到线性提交的整洁,我们一般在开发前在当前分支利用rebase进行“变基”(在dev分支上执行git rebase)
一个例子:
dev分支在开发后,准备提交的时候,发现master有新的提交,于是需要先把master分支的最新提交同步到dev分支来。
1、在dev分支上执行git pull origin master
这里说明下,如果master分支上的新提交的修改dev这边没有修改相同的文件的话,一般是不会产生冲突的,如果修改相同的文件则会有冲突。
2、很不巧,执行第一步之后,出现了冲突
3、解决冲突
有了冲突就只能先解决冲突,一一打开以上文件,解决冲突。
4、解决完冲突之后,执行git add [以上冲突的文件] 以暂存冲突文件。
5、执行git commit,就完成合并,将master合并到了dev
注:dev就对应截图中的optimize
6、查看历史,发现出现了分叉提交
7、那么就需要执行git rebase
8、当前分支有提交没有暂存和commit,因此不能rebase,于是暂存并提交当前分支的修改
9、再次执行git rebase,成功
10、查看历史,发现已经没有了分叉,并且合并的那个提交历史也消失了