转载

版本控制git(三)-git分支

通过本系列的上两篇文章(查看系列文章: http://www.cnblogs.com/jerehedu/p/4607599.html#bbkz ),我们已经知道了如何使用Git完成对文件的版本控制。本次我们继续学习如何通过Git进行分支管理。

首先,我们要弄明白什么是分支。通过git log 命令我们可以查看版本库的提交日志,如图:

版本控制git(三)-git分支

那么这些commit之间存在什么关系呢?实际上每次commit的时候,提交对象都会保存一个指向上次一commit版本的指针,经过多次提交之后,git通过这个指针将多个提交版本串成了一个串,如下图:

版本控制git(三)-git分支

分支实际上就是从某个提交版本向前的的历史,到目前为止Git中只有一个分支,这个分支我们称为主分支,默认名称为master。每提交一次,master就会向前移动一步,指向最新的提交版本。

创建新的分支

那么在Git中,我们如何创建新的分支呢,非常简单可以用使用Git命令:git branch分支名字。

版本控制git(三)-git分支

这样我们就创建了一个名为:jredu_branch_01的分支,注意此分支是建立在当前的commit版本对象上的,如下图所示:

版本控制git(三)-git分支

现在我们有了两个分支,那么Git如何知道当前的工作分支呢?其实在Git中保存着一个名为HEAD的特别指针,这个指针指向了当前的工作分支。

版本控制git(三)-git分支

切换分支

使用“git branch 分支名字”只是创建了一个分支,并不会切换到新建的分支中,如果想切换分支,我们应该使用命令:git checkout分支名字

版本控制git(三)-git分支

切换后,HEAD就指向了Jredu_branch_01,示意图如下:

版本控制git(三)-git分支

我们在jredu_branch_01分支下进行工作,通过命令”git add”和”git commit”添加新的文件并提交后,新的分支示意图如下:

版本控制git(三)-git分支

从示意图可以看出新分支jredu_branch_01向前移动了一步,而主分支master还停留在原来的版本上。

查看分支

在Git中存在多个分支,如何查看并知道当前工作分支呢?查看命令:git branch

版本控制git(三)-git分支

可以看到共有两个分支master和jredu_branch_01,“*”表明了当前的工作分支。

合并分支

有了分支之后,我们就可以方便的进行协作开发,这样就可以能会产生多个分支,那么如何进行分支合并呢?Git提供的合并命令:git merge被合并的分支

具体步骤,首先返回master分支,其次运行合并命令:

版本控制git(三)-git分支

这样我们就将jredu_branch_01分支合并到了master分支之上。

删除分支

Jredu_branch_01分支被合并到master之后,就没有用处了,这里我们可以选择删除它,Git中删除分支的命令: git branch –d 要删除的分支

版本控制git(三)-git分支

合并冲突

在合并分支的过程中,如果遇到不同的分支对相同的文件都做了修改,那么合并就不会那么顺利了,经常会看到如下的信息:

版本控制git(三)-git分支

这个时候git虽然做了合并,但是没有提交,需要解决冲突之后才能提交。通过git status命令我们可以看到冲突的文件

版本控制git(三)-git分支

打开冲突的文件,我们看到具体的文件内容

版本控制git(三)-git分支

文件中使用“=========”分割不同的分支文件修改中冲突的部分,“<<<<<<<<HEAD”部分是master分支修改的内容,”>>>>>>>>>>>jredu_branch_01”部分是分支jredu_branch_01分支修改的内容。

修改文件后,使用git add命令,并使用git status查看冲突 状态,并最终提交。

版本控制git(三)-git分支

这样就解决了冲突的问题,完成了最终的合并。

总结一下Git分支的相关命令

创建分支:git branch 分支名字

切换分支:git checkout 分支名字

查看分支:git branch

合并分支:git merge 要合并的分支

删除分支:git branch –d 要删除分支

疑问咨询或技术交流,请加入官方QQ群: 版本控制git(三)-git分支 (452379712)

作者: 杰瑞教育

出处: http://www.cnblogs.com/jerehedu/

本文版权归 烟台杰瑞教育科技有限公司 和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

正文到此结束
Loading...