Git使用详细教程(8):Git分支
创建分支
当我们使用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分支的更多相关文章
- Git使用详细教程(9):git log
目录 格式化 检索 显示最近提交 Git中使用git log查看提交日志 如果日志很多的话,默认会以分页方式展示 空格可以翻下一页,ctrl+b翻上一页,q退出 格式化 如果想获取每条日志的简要信息, ...
- Git使用详细教程(一)
很久不发博客,最近有兴趣想写点东西,但 Live Writer 不支持从Word复制图片,疯狂吐槽下 Git使用详细教程(一) Git使用详细教程(二) 该教程主要是Git与IntelliJ IDEA ...
- git全套详细教程
git安装 首先,我们要去git的官网下载一个git安装包,双击到无关紧要的步骤我就不详细描述了,直接介绍我们关键的步骤. 选择git包含的内容和打开方式 选择都很清晰,具体情况我不是很清楚,不过选择 ...
- git超详细教程
GitHub操作总结 : 总结看不明白就看下面的详细讲解. GitHub操作流程 : 第一次提交 : 方案一 : 本地创建项目根目录, 然后与远程GitHub关联, 之后的操作一样; -- 初始化Gi ...
- git超详细教程【转】
转自:http://blog.csdn.net/liuwengai/article/details/52072344 GitHub操作总结 : 总结看不明白就看下面的详细讲解. GitHub操作流 ...
- [置顶]
Git学习总结(1)——Git使用详细教程
一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...
- 5.Git使用详细教程
转自:https://www.cnblogs.com/seven-ahz/p/7712125.html 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的 ...
- 项目版本管理Git使用详细教程
前言 记得刚开始做项目开发的时候都是一个人完成一个项目,单打独斗的开发,也不知道什么是团队开发,没有这个概念,随着工作后来知道公司里项目都是团队开发,这个时候这么多人怎么开发一个项目呢,难道用u盘拷贝 ...
- Git使用详细教程(1):工作区、暂存区、本地仓库、远程仓库
之前的写过一篇如何在服务器上搭建Git服务Git服务器搭建,接下来的一段时间,我将详细的讲解Git的使用.看如下一张图片,本篇主要理解一些基本概念. 图中几个名词的意思如下: workspace: 工 ...
随机推荐
- 并发库应用之十 & 多线程数据交换Exchanger应用
申明:用大白话来说就是用于实现两个人之间的数据交换,每个人在完成一定的事务后想与对方交换数据,第一个先拿出数据的人会一直等待第二个人,直到第二个人拿着数据到来时,才能彼此交换数据. java.util ...
- mysql 中 character set 与 collation 的理解
character set 和 collation 的是什么? character set, 即字符集. 我们常看到的 utf-8, GB2312, GB18030 都是相互独立的 character ...
- Oracle-04:DDL语言数据表的操作
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- DDL操作: --创建学生表 create table student( sno number(4) not ...
- 许式伟:我与Go语言的这十年[转]
2017-12-18 许式伟 Go中国 2007 年 9 月 20 日,关于设计一门全新语言的讨论正式开始,这门全新的语言,就是后来的 Go.时至今日,Go 语言已经发布到 1.9 版本,走过了整整十 ...
- WARN: Establishing SSL connection without server's identity verification is not recommended
0.要想用Java连接mysql数据库,首先装好JDK,配置好环境变量,将jdk*.*.*\lib放入classpath,将jdk*.*.*\bin放入path中(*.*.*表示版本号):其次安装好m ...
- 2013-09-16 构建C1000K的服务器(1) – 基础
http://www.ideawu.net/blog/archives/740.html 著名的 C10K 问题提出的时候, 正是 2001 年, 到如今 12 年后的 2013 年, C10K 已经 ...
- 跟我学ASP.NET MVC之六:SportsStrore添加产品目录导航
摘要: 上一篇文章,我建立了SportsStore应用程序的核心架构.现在我将使用这个架构向这个应用程序添加功能,你将开始看到这个基础架构的作用.我将添加重要的面向客户的简单功能,在这个过程中,你将看 ...
- JAVA中Integer.valueOf, parsetInt() String.valueOf的区别和结果
先来看段代码 public class IntegerDemo { public static void main(String[] args) { String num = null; System ...
- Eclipse中Maven Install时发生错误
问题描述 要把一个本地包保存进本地maven库中, 所以对该project执行了run as => Maven Install, 结果报下面的错误. 解决办法 1. 通过命令窗口手动创建这两个文 ...
- nsq topic和channel的区别
topic:一个可供订阅的话题.channel:属于topic的下一级,一个topic可以有多个channel.二者关系可以再参考下面两文章:http://www.cnblogs.com/forres ...