创建分支

当我们使用git init projectName命令的时候,Git就会默认帮我们创建一个分支,名字叫做master。

我们还可以创建其它分支,使用git branch new_branch(新分支名称)

如果我们想在创建新分支的同时,并切换到新建的分支,需要加上额外的参数-b,使用git checkout -b new_branch(新分支名称),它等同于下面的两条命令

git branch new_branch
git checkout new_branch

查看分支

可以通过如下命令查看当前所处分支

git branch

切换分支

当我们从一个分支切换到另一个分支,可以使用如下命令

git checkout another_branch(另一个分支)

例如,从master切换到dev分支

删除分支

删除分支命令

git branch -d de_branch(待删除分支名)
git branch -D de_branch(待删除分支名)

-d-D有啥区别呢,如果你想删除的分支的内容已经合并到主分支了,那么使用-d即可,如果你在新分支上写了东西,但是并没有合并到主分支,你还想把它删除,你就得使用-D,Git这样做是为了保险起见,怕你忘了合并就删除了,但是如果你确实是想还没合并就删除了就可以使用-D

下图中,我再bug567分支做了一次提交操作,但是并没有合并到其它分支,在使用git branch -d bug567时,提示dev分支并没有合并,如果确实想删除它,可以使用git branch -D bug567

注意,我们不能删除我们当前所处的分支,什么意思呢?如果我们当前处于dev分支,我们通过git branch -d dev是无法删除dev分支的,需要先切换到其它分支,再去删除这个dev分支,因为如果你当前处于dev分支,你还把它给删除了,那么你当前该处于什么分支呢?这是不合理的,所以Git也不允许

分支合并

当我们在一个分支上写好代码后需要把代码合并到主分支,这里需要用到git merge命令,下图给出了示例,dev分支里index.txt有两行文字,而master分支index.txt里只有一行,这里吧dev分支的内容和master分支的内容合并,先切换到master分支,然后执行如下面命令

git merge dev

git branch -v

显示当前所处分支,最新的一条提交消息

探寻分支本质

分支

下图是一个分支上由commit id组成的记录线

HEAD保存在哪里呢?

上面图中的这种也叫做fast-forward,快进,这是在没有冲突的情况下,从某一个提交直接跳转到最新的一个提交上。

如果有冲突的话,我们需要在主分支把冲突解决,然后再commit。此时如果我们切换到dev分支,再执行git merge master时,也不会冲突了,而是fast-forward,此时我们再查看dev分支最新的commit id会发现和刚刚在主分支最新的commit id一样,dev分支只是采用了fast-forward方式更新了commit id,道理很简单,因为在master我们解决冲突后做了提交, master已经往前走了一步了,然后我们把往前走了一步的master再往回合并的话,此时实际上dev分支已经落后于master,git会认为这是一个快进,所以直接有指向dev的指针直接指向下一个master所指向的最新commit,直接就跳过去了。

下图这种方式,即使没有冲突,也会产生一个新的commmit id

Git使用详细教程(8):Git分支的更多相关文章

  1. Git使用详细教程(9):git log

    目录 格式化 检索 显示最近提交 Git中使用git log查看提交日志 如果日志很多的话,默认会以分页方式展示 空格可以翻下一页,ctrl+b翻上一页,q退出 格式化 如果想获取每条日志的简要信息, ...

  2. Git使用详细教程(一)

    很久不发博客,最近有兴趣想写点东西,但 Live Writer 不支持从Word复制图片,疯狂吐槽下 Git使用详细教程(一) Git使用详细教程(二) 该教程主要是Git与IntelliJ IDEA ...

  3. git全套详细教程

    git安装 首先,我们要去git的官网下载一个git安装包,双击到无关紧要的步骤我就不详细描述了,直接介绍我们关键的步骤. 选择git包含的内容和打开方式 选择都很清晰,具体情况我不是很清楚,不过选择 ...

  4. git超详细教程

    GitHub操作总结 : 总结看不明白就看下面的详细讲解. GitHub操作流程 : 第一次提交 : 方案一 : 本地创建项目根目录, 然后与远程GitHub关联, 之后的操作一样; -- 初始化Gi ...

  5. git超详细教程【转】

    转自:http://blog.csdn.net/liuwengai/article/details/52072344 GitHub操作总结 : 总结看不明白就看下面的详细讲解.   GitHub操作流 ...

  6. [置顶] Git学习总结(1)——Git使用详细教程

    一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...

  7. 5.Git使用详细教程

    转自:https://www.cnblogs.com/seven-ahz/p/7712125.html 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的 ...

  8. 项目版本管理Git使用详细教程

    前言 记得刚开始做项目开发的时候都是一个人完成一个项目,单打独斗的开发,也不知道什么是团队开发,没有这个概念,随着工作后来知道公司里项目都是团队开发,这个时候这么多人怎么开发一个项目呢,难道用u盘拷贝 ...

  9. Git使用详细教程(1):工作区、暂存区、本地仓库、远程仓库

    之前的写过一篇如何在服务器上搭建Git服务Git服务器搭建,接下来的一段时间,我将详细的讲解Git的使用.看如下一张图片,本篇主要理解一些基本概念. 图中几个名词的意思如下: workspace: 工 ...

随机推荐

  1. 学unity3d需要什么基础

    学unity3d需要什么基础?在游戏业发展如火如荼的情境下,很多人开始转行投身于游戏程序开发,而unity3D游戏开发则是他们必须了解和会用的游戏开发工具.在学习之前又应该了解哪些内容呢? unity ...

  2. ubuntu宽带连接

    1.打开终端:    输入:sudo pppoeconf    根据提示输入宽带用户名和密码,若提示Plugin rp-pppoe.so loaded.则已连接成功.2.手动开启/断开连接:    p ...

  3. SSM-MyBatis-13:Mybatis中多条件查询

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 实体类 public class Book { private Integer bookID; private ...

  4. ansj原子切分和全切分

    ansj第一步会进行原子切分和全切分,并且是在同时进行的.所谓原子,是指短句中不可分割的最小语素单位.例如,一个汉字就是一个原子.全切分,就是把一句话中的所有词都找出来,只要是字典中有的就找出来.例如 ...

  5. Unable to find remote helper for 'https'

    出现这个报错,说明git目前的状态是正常的,要么没装好,要么自己解决压缩安装导致没有权限 第三次情况是,使用yum install git 重新安装后,仍然报错,是因为环境变量中GIT_HOM配置的仍 ...

  6. itchat库初探--微信好友全头像的拼接

        代码: import itchat import math import PIL.Image as Image import os itchat.auto_login() friends = ...

  7. js算法初窥04(算法模式01-递归)

    终于来到了有点意思的地方--递归,在我最开始学习js的时候,基础课程的内容就包括递归,但是当时并不知道递归的真正意义和用处.我只是知道,哦...递归是自身调用自身,递归要记得有一个停止调用的条件.那时 ...

  8. 让Tomcat告别频繁重启

    在网站开发过程中,有一个很烦的问题就是每次我们在项目里增加几行代码,然后我们企图在浏览器中查看修改后的变化时,却发现浏览器的内容并不变化,于是我们只能通过频繁的重启tomcat来获得最新的效果,其实这 ...

  9. Elasticsearch笔记三之版本控制和插件

    版本控制 1:关系型数据库使用的是悲观锁,数据被读取后就被锁定其他的线程就无法对其进行修改. 2:ex使用的是乐观锁,数据被读取后其他程序还可以对其进行修改,而执行修改时发现此数据已经被修改则修改就会 ...

  10. .Net Remoting 调用远程对象

    根据需求,我们的系统必须以C/S方式构建,而且是三层架构,这样一来,就出现了服务器端和客户端通信的问题. 为了解决双方的通信问题,还要考虑效率.性能等方面,经过分析.试验,我们根据效率.移植.开发难易 ...