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

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

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

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

创建新的分支

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

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

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

切换分支

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

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

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

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

查看分支

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

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

合并分支

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

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

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

删除分支

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

合并冲突

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

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

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

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

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

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

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

创建分支:git branch 分支名字

切换分支:git checkout 分支名字

查看分支:git branch

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

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

  疑问咨询或技术交流,请加入官方QQ群: (452379712)

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

版本控制git(三)-git分支的更多相关文章

  1. Git(三):Git 使用规范流程

    转:http://www.ruanyifeng.com/blog/2015/08/git-use-process.html 团队开发中,遵循一个合理.清晰的Git使用流程,是非常重要的. 否则,每个人 ...

  2. 使用VSTS的Git进行版本控制(三)——评审历史记录

    使用VSTS的Git进行版本控制(三)--评审历史记录 Git使用存储在每个提交中的父引用信息来管理开发的完整历史记录.评审该提交历史记录,能够找出文件更改的时间,并确定代码版本之间的差异. Git使 ...

  3. 版本控制git之二 分支 切换分支 创建分支 合并 删除

      版本控制git之二 分支   有人把 Git 的分支模型称为它的`‘必杀技特性’',也正因为这一特性,使得 Git 从众多版本控制系统中脱颖而出. 为何 Git 的分支模型如此出众呢? Git 处 ...

  4. git——学习笔记(三)分支管理

    一.创建.合并分支 每次提交,git都往后走一格,串成一跳时间线,head指向的是分支,分支指向提交.master是主分支,dev是另一条分支,分支就像指针一样,合并.删除分支时,修改的都是指针,工作 ...

  5. git之合并分支(git merge)------(三)

    最近几天写小demo,总是自己拉取他人的代码,然后创建分支,在自己的分支上进行修改,然后提交到自己的分支,具体的这一步,我就不多讲了,因为在我的博客“工作中常用的Git操作”中有详细的介绍,今天主要讲 ...

  6. 版本控制git之二-分支

    有人把 Git 的分支模型称为它的`‘必杀技特性’',也正因为这一特性,使得 Git 从众多版本控制系统中脱颖而出. 为何 Git 的分支模型如此出众呢? Git 处理分支的方式可谓是难以置信的轻量, ...

  7. Git学习教程三之分支管理

    实战流程: 1:代码库克隆一份至本地 2:新分支操作 2.1  在需要的文件中创建并指向新的分支方便写代码  git checkout -b <name>                2 ...

  8. [Git01]Pro Git 第三章 分支 读书笔记

    [git]分支   Git 的分支模型称为“必杀技特性”,而正是因为它,将 Git 从版本控制系统家族里区分出来. Git 有何特别之处呢?Git 的分支可谓是难以置信的轻量级,它的新建操作几乎可以在 ...

  9. Git 深度学习填坑之旅三(分支branch、远程操作)

    0x01 分支branch依旧借用大表哥(@表元素)的图 很多时候,我们需要建立另一条分支来进行项目的独立开发,当完成后再跟主流回合进行合并这个时候就要启用分支branch功能 git branch ...

随机推荐

  1. LeetCode(6):Z字形转换

    Medium! 题目描述: 将字符串 "PAYPALISHIRING" 以Z字形排列成给定的行数:(下面这样的形状) P A H N A P L S I I G Y I R 之后按 ...

  2. python接口自动化测试二十七:加密与解密MD5、base64

    # MD5加密 # 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作 import hashlib def MD5(str): # 创建md5对象 hl ...

  3. elastalert邮件报警

    https://www.cnblogs.com/zhaijunming5/p/7943933.html

  4. Codeforces 138C Mushroom Gnomes - 2 线段树

    Mushroom Gnomes - 2 感觉没啥东西, 用线段树算算每个被覆盖的概率, 坑点是有很多个在同一个点. #include<bits/stdc++.h> #define LL l ...

  5. BZOJ2243 洛谷2486 [SDOI2011]染色 树链剖分

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ2243 题目传送门 - 洛谷2486 题意概括 一棵树,共n个节点. 让你支持以下两种操作,共m次操 ...

  6. 重温数据结构:树 及 Java 实现(转)

    转自:http://blog.csdn.net/u011240877/article/details/53193877 读完本文你将了解到: 什么是树 树的相关术语 根节点父亲节点孩子节点叶子节点如上 ...

  7. 移动端Tap与滑屏实战技巧总结以及Vue混合开发自定义指令

    最近在忙混合开发,因交互相对复杂,所以也踩了很多坑.在此做一下总结. 1.tap事件的实际应用 在使用tap事件时,老生常谈的肯定是点透问题,大多情况下,在有滑屏交互的页面时,我们会在根节点阻止默认行 ...

  8. 【java并发核心一】Semaphore 的使用思路

    最近在看一本书<Java并发编程 核心方法与框架>,打算一边学习一边把学习的经验记下来,所粘贴的代码都是我运行过的,大家一起学习,欢迎吐槽. 估计也没多少人看我的博客,哈哈,那么我还是会记 ...

  9. iOS 技术篇:渐变色的简单实现方式

    实现效果 //渐变设置 UIView *view = [[UIView alloc] initWithFrame:CGRectMake(,, [UIScreen mainScreen].bounds. ...

  10. Maltego更新到4.1.6

    Maltego更新到4.1.6   Maltego最近更新到4.1.6.由于Kali Linux软件源并没有提供此次更新包,用户需要进入Maltego进行手动更新.在起始页面中,双击状态栏右下角的黄色 ...