Git分支概述

Posted 橘猫吃不胖~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git分支概述相关的知识,希望对你有一定的参考价值。

Git分支概述

1 什么是分支

在版本控制的过程中,使用多条线同时推进多个任务。其中,多条线就是多个分支。

下面以图来说明。在本地库被初始化之后,有一个主分支(也叫主干)master,主干上有一些版本,正常情况下我们可以根据上一个版本去开发下一个版本:

但是如果我们要开辟新的功能,那么就不能在主分支上面继续开发,因为新的功能可能对主干有影响,或者说开发之后并不知道它的好坏,那么我们就可以开辟一个新的分支,也就是说一般新的独立的功能要开辟一个新的分支。新的分支首先要对主分支的最新版本进行一个复制,然后在它的基础上产生不同的版本。

接下来如果分支branch01上面的功能开发完善了,就需要加入主分支中,那么这个操作是将主分支和新的分支进行合并。

如果在主分支上出现了一个bug,那么团队就会在主分支上新开一个分支hot_fix(热修复),因为服务器开启之后是不会停止的,否则可能造成大量的损失,在hot_fix分支上修改完了bug之后,再将修改之后的版本合并到主分支上。

分支的好处:
1、多个分支可以并行开发,互相不影响,可以提高开发效率
2、如果有一个分支功能开发失败,直接删除分支即可,不会对其他分支产生影响

2 操作分支

比如说,我们在工作区创建一个文件001.txt,此时文件中没有任何的内容,将其上传到暂存区git add 001.txt,再将其提交到本地仓库git commit -m "添加了001.txt" 001.txt

那么我们使用git status查看有没有文件要被提交,我们可以看到显示了这样一段字:On branch master nothing to commit, working tree clean,表示在主分支上没有文件要被提交。

2.1 查看分支

git branch -v    # 查看分支


我们可以看到,只有一个主分支,主分支上就是我们刚刚提交的版本。

2.2 创建分支

git branch 分支名称    # 创建分支

根据上面的命令,创建一个新的分支branch01,使用命令git branch branch01

那我们再查看一下分支git branch -v

可以看到这时显示了两个分支,此时主分支master前面有一个“*”,表示当前我们在哪个分支上。

2.3 切换分支

git checkout 要切换到的分支名

使用上面的命令,将分支切换到branch01上面,使用命令git checkout branch01

我们再使用git branch -v来查看所有分支,可以看到“*”移动到了branch01上面,表示目前的分支是branch01,切换成功:

3 分支冲突

根据上一步的操作,我们将分支切换到了branch01,那么我们给001.txt文件中加入一些内容:

在工作区中修改之后,要先提交到暂存区git add 001.txt,再提交到本地仓库git commit -m "在分支01中增加内容" 001.txt

此时切换到master分支中git checkout master,并使用git branch -v查看所有的分支,我们发现主分支的索引号并没有变化,但是01分支里面的内容改变了。

接下来我们在主分支为001.txt增加一些内容,然后将其提交到暂存区,再提交到本地仓库:

3.1 分支合并

在前几步中,我们给主分支和branch01分支中都添加了一些内容,那么接下来要将branch01的内容合并到主分支中,首先切换到主分支:git checkout master,接下来输入以下指令:

git merge 分支名称


由于主分支和branch01分支都对同一个文件进行了修改,于是出现了冲突,那我们查看一下文件中的内容cat 001.txt,可以看到两个分支对文件做出了不同的修改:

3.2 解决冲突

出现冲突之后,公司内部要自己协商使用哪一个版本的文件,git并不会帮助我们删除某一个版本。或者说将两个文件合并到一起也可以。

解决步骤首先就是将文件中的箭头、等于号这些特殊符号删除掉,并且根据自己的情况删除不想要的内容,比如说我删除了主分支的修改:

然后将其提交到暂存区git add 001.txt,这时查看状态git status,git告诉我们我们仍旧处于分支合并的状态,在git commit命令之后才可以解除这种状态:

那我们尝试使用git commit -m "解决了冲突提交问题" 001.txt来提交一下该文件,我们会发现它出现了新的问题:fatal: cannot do a partial commit during a merge.

这时我们不应该在提交时加入文件名,提交的时候直接使用git commit -m "解决了冲突提交问题"来提交即可,可以看到此时提交之后,合并状态也解除了:

以上是关于Git分支概述的主要内容,如果未能解决你的问题,请参考以下文章

Git分支概述

Git分支概述

关于git的分支

GIT04_分支概述查看创建切换合并分支代码冲突如何定位解决

Git 第一章 Git概述 -- 概述几种Git(GitGitHubGiteeGitLab)

git 使用规范