本系列BLOG为鄙人学习GIT时的学习笔记。前一个知识点引出后一个知识点,后一个例子接着前一个例子。
文章目录
- 分支管理
- 1.查看分支情况
- 2.创建分支
- 3.切换工作分支
- 4.合并分支
- 5.删除分支
- 举个例子11(接例子10)
- 导航
- 目录
分支管理 定义: 分支即每个人在原有代码(分支)的基础上建立自己的工作环境,单独开发,互不干扰。完成开发工作后再进行分支统一合并。
我们画一张图,解释一下分支:
文章图片
1.查看分支情况
git branch
#查看本地分支
#------------------
git branch –r
#只查看远程分支
#------------------
git branch –a
#查看所有分支
说明: Git Bash输出中前面带 * 的分支表示当前工作分支.比如【* master】
2.创建分支
git branch [branch_name]
说明: 若基于a分支创建b分支,此时b分支会拥有a分支全部内容。在创建b分支时最好保持a分支工作区处于"干净"状态。因为分支创建时,只能copy仓库区内容,所以如果a分支处于”不干净”的状态,则a分支在工作区未提交的内容,b分支copy不过来。
3.切换工作分支
git checkout [branch]
#-----------------------------------
#创建分支和切换工作分支可以同时操作,即创建并切换分支
git checkout -b [branch_name]
4.合并分支
git merge [branch]
冲突问题是合并分支过程中最为棘手的问题
若基于a分支,同时创建出了b和c分支。当c分支修改完,先和a分支进行了合并,那么……
●当b分支与a分支合并时,a分支相比于创建分支b时发生了变化(a分支先和c分支合并,导致自身发生改变),就会产生冲突
●当b分支与a分支合并时,若b和c分支都只添加了新的模块(文件),这种冲突可以自动解决,只需自己决定commit操作即可。
●当b分支与a分支合并时,若b和c分支均修改了同一个模块(文件),则需要手动解决冲突。
5.删除分支
git branch -d [branch] #删除分支
git branch -D [branch] #删除没有被合并的分支
举个例子11(接例子10)
首先我们查看分支(本地)情况(git branch):
文章图片
我们看到,我们只有一个master分支。我们再检查一下master分支的工作空间是否干净:
文章图片
嗯!工作空间clean~
接下来我们再基于master分支,创建Huang分支和Bai分支。
基于我们的master分支,创建分支(git branch [branch_name]):
文章图片
查看一下分支情况:
文章图片
好了我们的Huang分支和Bai分支都创建成功了
我们想要切换到Huang分支~可咋整呢?可以用切换工作分支命令(git checkout [branch]):
文章图片
切换成功!别忘了若某分支前有【*】星号,则表示此分支为当前所在分支。
我们在Huang分支下创建一个Huang.txt文件:
文章图片
查看Huang.txt文件的内容:
文章图片
查看本地仓库状态:
文章图片
可以看到Huang.txt处于未提交状态。
我们将工作记录添加到暂存区,并提交Huang.txt文件到仓库区,并查看工作区状况:
文章图片
我们再回到master分支,看一下状况:
文章图片
查看一下master分支下,工作区内的文件:
文章图片
我们在Huang分支创建的Huang.txt文件没有了呢~这也验证了,各个分支之间完全独立的说法。
我们现在切换到Bai分支,创建Bai.txt文件,并提交到仓库区:
文章图片
我们再切换回master分支,并将Bai分支与master分支合并(git merge [branch]):
文章图片
我们查看一下master分支下,工作区内的文件:
文章图片
嗯!Bai.txt被合并到master分支下了~
我们再将Huang分支与master分支合并:
文章图片
我们不需要管前两个错误,这主要是我们使用Editplus出现的问题。我们只需要看最后一行:【Not committing merge; use ‘git commit’ to complete the merge】,表示【未提交合并,使用’git commit’完成此次合并】。==为啥未提交合并呢?==这是因为,在我们将Huang分支与master分支合并时,发现master分支和以前不太一样了。==为啥master分支和以前不一样了呢?==这是因为,在master分支与Bai分支合并时,master分支添加了一个Bai.txt文件。==那么我们应该怎样完成合并呢?==这个问题很好解决,因为Bai分支和Huang分支,都只是分别添加了一个独立的模块,并没有对相同的模块进行操作,所以我们只要手动将Huang要提交的独立模块commit到仓库区就可以了。
备注:这种问题就是产生了冲突。
我们查看一下本地仓库状态:
文章图片
果然,Huang.txt的工作记录被添加进了暂存区,但并没有提交进仓库区。
我们手动将其,提交进仓库区:
文章图片
我们再看一下master分支下,工作区内的文件:
文章图片
合并成功啦~~
==注意!==这种Huang分支和Bai分支,因为分别创建独立模块,而在与master合并时,产生的冲突是容易解决的;但如果我们的2个分支在同一个模块中,分别做各自的修改,则在合并时,产生的冲突是不太好解决的。
我们切换到Bai分支,并在data01.txt中进行更改:
文章图片
备注:data01.txt文件中,【Bai模块】一词写错,应该是【Bai分支】。
我们add文件操作记录并commit文件:
文章图片
再切换到Huang分支,并也在data01.txt中进行更改:
文章图片
我们add文件操作记录并commit文件:
文章图片
回到master分支,并将Bai分支与master分支合并:
文章图片
我们发现产生了冲突,我们看一下master的本地仓库状态:
文章图片
发现文件修改记录已经被add进了暂存区,但是还没有commit进仓库区。我们先不急着commit,先看一下master中的data01.txt文件:
文章图片
嗯!在Bai和master合并后,Bai分支中,对data01.txt更改的内容,添加进master分支的data01.txt模块了。
我们现在将data01.txt文件commit进仓库区:
文章图片
好的~那我们现在再将Huang与master进行合并会怎样呢?
我们进行Huang与master的合并操作,并且查看master的本地仓库状态:
文章图片
由划红线的结果可知,自动合并失败。并且对data01.txt进行修改的记录,没有add进暂存区。这是因为,我们的2个分支在同一个模块data01.txt中进行了修改,git无法帮助我们解决冲突,需要我们人为解决冲突。
我们看一下data01.txt文件:
文章图片
由data01.txt显示的结果可知,HEAD以下->分割线,显示的是data01.txt当前的样子。而Huang以上->分割线,显示的是我们想要向data01.txt中添加的东西。此时,我们应该经过仔细的判断,自己做出选择。
这里我选择俩都保留:
文章图片
手动修改完后,我们再将data01.txt进行add和commit操作,才能完成合并:
文章图片
若此时我们不需要Bai分支了,我们可以删除分支(git branch -d [branch]):
文章图片
则此时,我们完成了删除Bai分支的操作。
导航 上一节:保存工作区
目录 简介及概念
初始配置
初始化仓库及查看仓库状况
提交文件暂存记录及同步文件至本地仓库
查看commit 日志记录
放弃工作区文件修改及从仓库区恢复文件
移动或者删除文件
版本控制
保存工作区
分支管理
【项目管理工具GIT|GIT项目管理工具(part10)--分支管理】这个系列暂时完结啦~
推荐阅读
- 编程语言|想接私活时薪再翻一倍,建议根据这几个开源的SpringBoot项目(含小程序)改改~...
- C语言与C++编程|大厂已经不收一本以下学历的程序员了......
- git add -A 可以免于 git rm
- Git|Git入门教程(二、安装Git)
- Git|Gitee和GitLab
- 书写友好的提交信息
- 学习|Git、node、npm、webpack、yarn、脚手架是什么
- java|阿里MaxCompute生态团队负责人—李睿博 : 参与开源,让自己的履历与众不同|《大神详解开源 BUFF 增益攻略》讲座回顾...
- Android|Android AOSP资源的下载