本教程一共5部分,这是第4部分
总目录:保姆级Git教程0-序章
3、保姆级Git教程3-Git本地仓库管理代码的基本操作流程
目录
4、Git分支
分支是Git中特别重要的一个功能,其实就是版本,不同分支代表不同版本。分支使程序员们可以同时在不同分支上开发不同的功能,最后将分支合并到主干master上,它让团队协作开发变得非常方便。
4.1、查看本地分支
命令:git branch
4.2、创建本地分支
命令:git branch 分支名
4.3、切换分支***
命令:git checkout 分支名
作用:切换到目标分支
命令:git checkout -b 分支名
作用:创建并切换分支
由于git checkout 命令还可用来恢复文件,那么当文件名与分支名一样时就会产生歧义,歧义时默认是切换分支。在Git 2.23之后提供了专门用来切换分支的命令,如下所示:
命令:git switch 分支名
作用:专门用来切换到目标分支
4.4、合并分支***
命令:git merge 分支名
作用:将一个目标分支上的提交合并到当前分支
分支被合并后依旧存在,如果不要了就可以手动删除
4.5、删除分支
删除分支时不能删除当前分支,只能删除其他分支
命令:git branch -d b1 删除分支时,如果将被删分支没有被合并,则删除失败
git branch -D b1 不做任何检查直接强制删除,未合并分支也可以被删除
4.6、解决冲突
在两个分支没有重合的修改内容(比如修改了同个文件的同一行)时合并很容易,但是如果有重合修改时就会产生冲突,产生冲突之后合并就无法自动合并
git status命令可以查看冲突的文件
git diff命令可以查看冲突的内容
产生冲突合并失败后,需要手动修改冲突内容然后提交
4.7、分支变基
命令:git rebase 分支名
作用:将当前分支变基到目标分支上,变基后分支变为直线
4.8、开发中分支使用原则
在开发中通常有几种分支,它们各有各的任务
1、master(生产)分支
线上分支,也是主分支,中小规模项目作为线上运行的对应分支
2、develop(开发)分支
是基于master创建的分支。一般作为开发部门的主要分支,如果没有其他并行开发不同期上线要求,都可以在此版本进行开发,阶段开发完成后,需要是合并到master分支,准备上线。
3、feature/xxxx分支
从develop创建的分支,,一般是同期并行开发,但不同期上线时创建的分支,分支上的研发任务完成后合并到develop分支。
4、hotfix/xxxx分支
从master派生的分支,一般作为线上bug修复使用,修复完成后需要合并到master、test、develop分支。还有一些其他分支,在此不再详述,例如test分支(用于代码测试)、pre分支(预上线分支)等等。
4.9、分支基本操作流程
下面逐步演示本地的1查看分支、2创建分支、3切换分支、4合并分支、5删除分支、6解决冲突、7分支变基。
新建个本地仓库
将Text1提交进仓库 ↓↓↓
4.9.1、git branch 查看分支↓↓↓
可以看到目前只有一个分支master,下面我们创建一个新的分支
4.9.2、创建一个新的分支,命名为dev1
再查看分支 ↓↓↓
git branch 分支名创建分支
git branch查看分支时哪个绿色了就表示当前在哪个分支了,也可以看后面的括号里是哪个分支的名字
4.9.3、切换到dev1分支
切换后再查看分支 ↓↓↓ 使用git switch命令切换语义更明确
可以看到现在已经切换到dev1分支了
我们在dev1分支中添加新文件Text2并提交
touch创建文件,git add、git commit提交到仓库↓↓↓
然后以图的方式log查看一下提交记录,看看分支间的关系
完整命令git log --pretty=oneline --all --graph --abbrev-commit
(如果有跟教程2配置别名直接git-log即可)↓↓↓
此时在分支间进行切换,可以看到仓库中的内容不一样
目前处于dev1分支看仓库文件↓↓↓
切换到master分支查看仓库文件↓↓↓
master和dev1都是分支,可以看成不同的版本
为什么dev1会比master分支多一个Text2文件?
因为dev1分支是在master分支后面创建的,然后再提交了Text2,也就是说dev1的版本比master更加新
下面看个图就能明白了
如果我们在dev1分支上进行开发,完成目标开发任务后,下一步就应该将dev1分支合并到master主分支上了
4.9.4、dev1分支合并到master分支
要把dev1合并到master分支必须先切换到master分支
再使用git merge命令将dev1合并过来↓↓↓
由此可知,被合并了的分支并不会消失,不要了还要手动删除
我们再log一下以图的方式看看提交记录 ↓↓↓
4.9.5、两种方式删除分支
比如说合并完了之后,我不要dev1分支了,那么就可以删除它
删除操作不能删除当前分支,且有两种,普通删除与强制删除
普通删除只能删除已经合并过或没有提交记录的分支,而强制删除都可以删除
将已合并的dev1删除↓↓↓
假如我普通删除已提交的未合并分支
先创建一个新的分支dev2,并且进行提交↓↓↓
尝试普通删除它↓↓↓
这里提示错误,删除失败,原因就是这是一个有提交记录的未合并分支,普通删除就会检查它,防止你误删
假如我已经明确要删除它,那么可以使用-D强制删除↓↓↓
4.9.6、当分支出现冲突的解决
当我们两个不同分支修改了同一个文件的同一行内容,而且内容不一致并进行合并操作时,就会提示分支冲突
这里我在master分支上修改Text1.txt文间的第一行并提交
再修改新建分支dev3上的Text1.txt文件第一行并提交
那么在此时进行merge合并到master分支,就会出现问题
如何解决呢?
我们可以使用git diff命令查看冲突内容
解决办法就是打开出现冲突的文件Text1.txt
你会发现它变成和指令框里的内容一样了
只能手动修改它,改成你想要的内容
比如我这里全都不要,改成666666然后提交即可↓↓↓
关于分支的操作就演示完毕了,下期见!
本教程一共5部分,这是第4部分
总目录:保姆级Git教程0-序章