默认情况下, Git合并是采用"fast forward"模式,但这种模式下,如果删除分支,会丢掉分支信息

禁用 fast forward 模式:

git merge --no-ff -m "merge with no-ff" dev

分支策略

在实际开发中,我们应该按照几个基本原则进行分支管理:

首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

bug 分支:

比如我们正在工作,突然需要修复一个bug,而当前手上dev分支的工作还没有做完,无法提交,可以使用命令:

git stash      ----- 存储当前工作现场 (当前在dev 分支上)

然后创建一个分支

git checkout -b issue-101     (比如,在master分支上修复,那么,就需要在master分支上创建 issue-101分支)

修复好bug并提交

然后 切换到 master 分支上,合并 issue-101 分支

git merge --no-ff -m "merged fix bug 101" issue-101

合并完删除issue-101分支,

git branch -d issue-101

再切换到dev 分支,通过命令

git stash list    ----- 查看存储的工作现场项

恢复有两种方法,第一种是 git stash apply 这种方法恢复后 stash 内容并未删除,还须 git stash drop 来删除

第二种是 git stash pop 这种方法恢复后会将stash内容一并删除,

当有多个stash时,可以回到任意一个stash,比如,我又三个stash项,现在我想回到stash@{1}项,

git stash pop stash@{1}

Git 学习第三天(二)的更多相关文章

  1. Git 学习(三)本地仓库操作——git add & commit

    Git 学习(三)本地仓库操作——git add & commit Git 和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念.这在上文已有提及,本文具体说明什么是工作区及暂存区,以及 ...

  2. Git学习(三)——暂存区、远程仓库、增删改管理

    一.工作区和暂存区 工作区(Working Directory) 就是在你的电脑里能看到的目录 版本库(Repository) 工作区中的一个隐藏目录.git,这个不算工作区,而是Git版本库.Git ...

  3. Git学习笔记--配置(二)

    由之前文章,总结得出Git的特点: 最优的存储能力: 非凡性能: 开源的: 管理成本低: 很容易做备份: 支持离线操作: 很容易定制工作流程: Git is a free and open sourc ...

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

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

  5. javaweb学习总结(三十二)——JDBC学习入门

    一.JDBC相关概念介绍 1.1.数据库驱动 这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后才能够使用声卡和网卡 ...

  6. Python学习(三十二)—— Django之视图系统

    转载自:http://www.cnblogs.com/liwenzhou/articles/8305104.html Django的View(视图) 一个视图函数(类),简称视图,是一个简单的Pyth ...

  7. Jmeter学习(三十二)调试工具Debug Sampler(转载)

    转载自 http://www.cnblogs.com/yangxia-test 一.Debug Sampler介绍: 使用Jmeter开发脚本时,难免需要调试,这时可以使用Jmeter的Debug S ...

  8. Git学习笔记(三)

    Git提交相关内容 在Git提交时,会保存一个提交对象,该对象包括一个指向暂存区内容快照的指针,包括本次提交作者等相关附属信息,包括零个或多个指向该提交对象的父对象指针:首次提交时是没有祖先,普通提交 ...

  9. git学习(三):版本控制

    查看每次修改日志 git log 会显示每次修改的日期和相应提交的commit 版本控制 git reset --hard <版本id> 这里的id可以是HEAD^(上一个) HEAD^^ ...

随机推荐

  1. python模块学习之testlink (自动回写测试案例执行结果到testlink)

    安装 pip install TestLink-API-Python-client #!/usr/bin/env Python # -*- coding: utf-8 -*- ''' Created ...

  2. Linux下安装JDK(小白教程)

    一.      选择与下载jdk 1. 官网上按照自己的系统版本下载相应jdk,因为我的LINUX(testbest)是32位的,所以我下载32位的jdk. 2. 官网下载地址:http://www. ...

  3. ZanUI-WeApp -- 一个颜值高、好用、易扩展的微信小程序 UI 库

    ZanUI-WeApp -- 一个颜值高.好用.易扩展的微信小程序 UI 库:https://cnodejs.org/topic/589d625a5c8036f7019e7a4a 微信小程序之官方UI ...

  4. RedisTemplate序列号自增id(当前日期+序列号)

    话不多上,直接上码 public class TestService { @Resource RedisTemplate<String, Object> redisTemplate; pu ...

  5. ivew Upload 上传图片组件

    1. 先展示一个效果图 2.代码详解 <!-- 封面缩略图 --> <div class="pop-up-div pic"> <div class=& ...

  6. python tkinter 实现 带界面(GUI)的RSA加密、签名

    代码环境,python3.5.2 RSA加密的过程是:使用公钥加密,私钥解密 RSA签名的过程是:使用私钥签名,公钥验证 所以核心代码就是,生成公钥私钥,使用公钥私钥分别进行加密解密. 在实际编码的时 ...

  7. byte为什么要与0xff

    面对带正负号的数,会采用符号扩展,如果原值是正数,则高位补上0:如果原值是负数,高位补1.二进制是计算技术中广泛采用的一种数制.二进制数据是用0和1两个数码来表示的数.当前的计算机系统使用的基本上是二 ...

  8. 【记录】安装mysql Install/Remove of the Service Denied!错误的解决办法

    最近安装 Mysql 5.6版本,在安装的过程中出现Install/Remove of the Service Denied!错误!(本人Win10 系统) 出现此问题是由于当前用户权限不够,需要以管 ...

  9. OpenGL学习——搭建OpenGL运行环境——生成一个空白视口——基于GLFW&GLEW

    最近学习OpenGL,读OpenGL宝典一头蒙,各种gl函数不知所云.逐决定先搭OpenGL运行环境,详细如下. 1.首先OpenGL是什么?是一个标准规范,是一个巨大的状态机,并无具体实现,大多数实 ...

  10. Linux主机通过windows虚拟机上网

    现在有些公司喜欢把网络接入和安全管理揉在一起管理,放着标准的协议不用,偏偏要采用某些厂商自己搞的所谓的"一整套解决方案".这些所谓的解决方案又常常只顾着windows.对非软件行业 ...