场景:一个功能上线了,上线后有两个任务必须要做,第一个,线上如果出现bug无条件,第一时间抢修.
第二个增加新的功能.
好,问题来了,这两件事情先做哪一个?
先改bug,bug要等用户用了才知道,难道干等着?
先做功能,但是如果功能做到一半,bug出现了怎么办,撤回release版本?那之前做的功能不就没了吗?
解决方案:
不轻易修改master
查看当前有哪些分支
$ git branch //看本地分支 $ git branch -a //看远程分支 |
创建分支方式一:本地创建
$ git branch fixbug_branch //创建分支,此时该分支的进度和master的进度是一致的。 $ git checkout fixbug_branch //切换到fixbug_branch分支 接下来在该分支的修改都不会影响到master分支。
$ git push https://gitee.com/liqiang/test.git fixbug_branch:fixbug,推到远程仓库和别人一起协作开发该分支 |
创建分支方式二:通过远程仓库创建
然后clone即可
$ git clone https://gitee.com/zhuximing/test.git -b weicpay |
$ git branch -d fixbug
如果bug已经修复好,这时候我们需要将bug分支代码合并到master
1:先切换到master分支
$ git checkout master
2:合并
$ git merge fixbug //从fixbug分支合并到master分支
如果master分支不动,不修改,不提交,只改fixbug分支,这种情况合并是不会冲突的。
但是如果master和fixbug同时修改,提交,前进,而且改同一个文件,那么合并的时候就会冲突
冲突演示:
fixbug,修改a.txt文件,并提交
$ gi add .
$ git commit -m 'fixbug 修改了a.txt'
切换到master
master,耐不住寂寞,也修改a.txt
$ git add .
$ git commit -m 'master 修改了a.txt'
合并失败
解决冲突:
1:谁改的master,谁改的fixbug,站出来,你们一起商量下怎么合并
2:最终商量的结果
3:提交
$ git add . $ git commit -m '分支合并冲突已解决' |