创建分支

当我们使用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. 浅谈通信网络(三)——TCP/IP协议

    简介 Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议.In ...

  2. CSS伪类详情

    参考:http://blog.csdn.net/Panda_m/article/details/50084699

  3. PAT1096:Consecutive Factors

    1096. Consecutive Factors (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A ...

  4. PAT1107:Sum of Number Segments

    1104. Sum of Number Segments (20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CAO, Pen ...

  5. @Controller和@RestController之间的区别

    1. Controller, RestController的共同点 都是用来表示Spring某个类的是否可以接收HTTP请求 2. Controller, RestController的不同点 @Co ...

  6. JAVA远程通信的几种选择(RPC,Webservice,RMI,JMS的区别)

    RPC(Remote Procedure Call Protocol) RPC使用C/S方式,采用http协议,发送请求到服务器,等待服务器返回结果.这个请求包括一个参数集和一个文本集,通常形成&qu ...

  7. WPF 毛笔字

    1.先来看看InkCanvas的一般用法: <InkCanvas>     <InkCanvas.DefaultDrawingAttributes>           < ...

  8. Spring Boot 2.0 教程 - 深入SpringAplication

    原文连接:https://www.codemore.top/cates/Backend/post/2018-05-20/spring-boot-SpringApplication 可以通过Spring ...

  9. tkinter中布局pack、place和grid(八)

    tkinter中布局pack.place和grid pack布局 import tkinter wuya = tkinter.Tk() wuya.title("wuya") wuy ...

  10. app后端设计(6)-- LBS

    在LBS的应用中,一个基本的需求是查找附近的用户,现在有两种做法: 1. 使用mysql的空间数据库,具体做法参考:http://blog.sina.com.cn/s/blog_a48af8c0010 ...