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: 工 ...
随机推荐
- 加密原理介绍,代码实现DES、AES、RSA、Base64、MD5
阅读目录 github下载地址 一.DES对称加密 二.AES对称加密 三.RSA非对称加密 四.实际使用 五.关于Padding 关于电脑终端Openssl加密解密命令 关于网络安全的数据加密部分, ...
- Netty中的EventLoop和线程模型
一.前言 在学习了ChannelHandler和ChannelPipeline的有关细节后,接着学习Netty的EventLoop和线程模型. 二.EventLoop和线程模型 2.1. 线程模型 线 ...
- Tiny4412中断之看门狗
一:看门狗(WDT watch dog timer) 看门狗其实是一个计数器,它的作用就是防止程序陷入死循环或者程序运行跑飞:看门狗是一个硬件,它的工作原理是,初始化给他一个值,它会过一段时间减一,直 ...
- S/4 HANA中的数据库锁策略
S4中的新的MM数据模型以及HANA的Insert-only特性允许物料凭证的并行处理,提高了相关的吞吐量.由此,数据库锁的应用情况也发生了变化.下文将介绍这些变化(基于S4 1610). 本文链接: ...
- Java开源生鲜电商平台-订单抽成模块的设计与架构(源码可下载)
Java开源生鲜电商平台-订单抽成模块的设计与架构(源码可下载) 说明:订单抽成指的是向卖家收取相应的信息服务费.(目前市场上有两种抽成方式,一种是按照总额的抽成比率,另外一种是按照订单明细的抽成比率 ...
- Prefer ThreadLocalRandom over Random
Java 7 has introduced a new random number generator - ThreadLocalRandom Normally to generate Random ...
- Websql,应用程序缓存,WebWorkers,SSE,WebSocket
①什么是 Web Worker? 当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成. web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的 ...
- [python]pip总结
基本命令解释 安装 pip 下载 地址 https://pypi.python.org/pypi/pip 下载 tar.gz 打开cmd,把路径切换到解压后的文件夹 python -m python ...
- 【深度学习系列】PaddlePaddle垃圾邮件处理实战(一)
PaddlePaddle垃圾邮件处理实战(一) 背景介绍 在我们日常生活中,经常会受到各种垃圾邮件,譬如来自商家的广告.打折促销信息.澳门博彩邮件.理财推广信息等,一般来说邮件客户端都会设置一定的 ...
- 用java8重写Arrays.sort(oldWay, new Comparator<String>(){@Override public int compare(String s1, String s2)});
参考https://www.liaoxuefeng.com/article/001411306573093ce6ebcdd67624db98acedb2a905c8ea4000/ Java 8终于引进 ...