前期文章写到代码的提交,实际场景中,测试测通过后,就需要将功能分支合并到主分支,然后进行发版等操作。那分支如何进行合并?合并过程中出现冲突如何解决呢?
1、本地库当前仅有一个分支main,这时候HEAD头指针执行main
2、新建分支feature1 并切换到此分支。
git checkout -b feature1
新建feature1分支,其实就是将feature1指向main,并将头部指针HEAD指向feature1
3、修改a.java文件.
添加:ahahahah
4、提交修改
git add a.java
git commit -m ‘feature1 commit’
此时feature1有了新的提交,具体如下:
5、切换分支到main
git checkout main
6、修改a.java内容
当前a.java
添加:heiheiheihei
修改并提交
此时main分支上也有了一次新的提交,且头部指针HEAD指向main.
7、将分支feature1合并到main分支,存在冲突,需要解决冲突。
因为feature1对a.java进行过一次提交,所以合并时出现冲突。
git merge feature1
8、冲突解决
查看a.java文件,展示不同分支的修改,选择自己想要修改的内容,进行修改。
修改a.java文件为:ahahaahah,并进行提交修改。
出现冲突时,同一个a.java文件出现不同分支的修改,此时对a.java文件修改成自己想要修改成的内容,例如:修改成feature1提交的内容,将main原来提交的内容删除。
修改后,对a.java文件进行一次新的提交,此时冲突解决。
由下图可以看到,在解决冲突时,main分支其实进行了一次新的提交。
小知识
master:主分支。
develop:开发主分支,代码永远是最新。
feature-xxx:功能开发分支,在develop上创建分支。例如:origin/feature/video_tab.
release:预发布分支,在合并好feature分支的develop分支上创建。
release-fix:功能bug修复分支,在release上创建分支修复,修复好提测的bug之后合并回release分支。例如:origin/feature/fix_voice_input_crash.
以上为分支的合并与冲突的解决。多练习,共勉!