Git笔记(四)分支管理
本文最后更新于:6 个月前
分支管理命令、管理策略(git工作流)、分支合并冲突、并行和串行2种合并分支方式
Git笔记(四)分支管理
一、分支管理命令
1.1、新建分支
1 |
|
1.2、查看分支
1 |
|
1.3、切换分支
1 |
|
1.4、修改分支名
1 |
|
1.5、合并分支
1 |
|
添加--on-ff
参数的合并方式如下图:
不添加--no-ff
参数时,默认执行快进式合并,示意图如下:
1.6、删除分支
1 |
|
1.7、推送分支
1 |
|
1.8、建立分支追踪关系
1 |
|
二、分支管理策略
「分支管理策略」,实质上与「Git工作流」相差无几。可以参考《Git理论基础》中的Git工作流部分。
大体上,分支按照功能可以分为:
- 发布分支release或production
- pre-production预发布分支
- master主分支
- develop开发分支
- feature功能分支
- fix补丁分支
三、合并冲突
3.1、什么是git冲突
- git冲突一般发生在分支不同步的情况下,这里的分支不同步有2种情况:
- 一种是本地两个不同分支之间不同步,例如:从master分支上新建出一条dev分支,在dev分支修改并commit之后,要把修改同步到master分支;但是在创建完dev分支之后,master分支又有了新的commit;这时两个分支之间就不同步了,所以将dev合并到master上时,就会产生冲突。
- 另一种是本地分支与远程分支之间不同步,例如:从远程origin的main分支拉取内容到本地master分支,在master做修改之后commit;但是与此同时,远程main分支也有了新的修改;这里要把本地master分支推送到main分支也可能会产生冲突。
- 冲突发生在具体文件里,master分支(在创建完dev分支后)对a文件做了修改并提交,dev分支对a文件也做了修改并提交,这时将dev分支合并到master分支时,就会在a文件中起冲突。
简要来说,git冲突就是两个分支对于同一文件修改的内容不一致,如果将B分支合并进A分支,将导致A分支中对文件的部分修改丢失/被篡改。而这时候就需要手动来决定保留哪些部分(冲突解决办法)
3.2、避免冲突
- 编辑代码之前,先pull一遍远程代码,保证修改是基于最新的代码
- 减少每次提交的代码行数,一来发生冲突的概率小了,二来即使发生冲突也更容易解决。
3.3、解决冲突
解决办法:手动修改发生冲突的文件,保留需要的代码,删除不需要的代码
示例如下:
第一步,准备工作,制造一个git冲突
1 |
|
第二步,发生git冲突后,手动修改发生冲突的a.txt文件
此时的分支情况如下:
git冲突提示如下:
接下来,打开a.txt文件
删除不要的部分,保留需要的部分
然后再输入命令:
1 |
|
查看此时的分支情况如下:
四、两种合并方式
4.1、merge并行合并
git merge
合并会在master分支上进行扩充,并且保留bugfix分支的历史记录,是一种非破坏性操作,历史记录相对复杂
4.2、rebase串行合并
git rebase
会将bugfix
分支整个分支移动到master
分支之后
Git笔记(四)分支管理
http://timegogo.top/2023/02/23/Git/Git笔记(四)分支管理/