一、分支管理策略

通常,合并分支时,如果可能,git会用fast forward模式,但是有些快速合并不能成而且合并时没有冲突,这个时候会合并之后并做一次新的提交。
比如这样的场景

  • 第一步:创建一个新分支,在新分支中创建一个文件,在文件中写入内容,然后提交
  • 第二步:在主分支中的code.txt中写入一行内,然后提交

在这种情况下,虽然主分支和dev分支都有修改操作,但是并不是修改同一个文件,因此可以正常完成合并;但是此时执行合并的时候,无法执行快速合并,而是git会自动将dev分支中的内容合并到master分支,然后执行提交。
(1)创建切换到dev分支下。

[root@test-zookeeper-go-016003 git_test]# git checkout -b dev
Switched to a new branch 'dev'
[root@test-zookeeper-go-016003 git_test]# git branch
* devmaster

(2)新建一个文件code3.txt编辑内容如下,并提交一个commit。

[root@test-zookeeper-go-016003 git_test]# echo "new file" >> code2.txt
[root@test-zookeeper-go-016003 git_test]# git add code2.txt
[root@test-zookeeper-go-016003 git_test]# git commit -m "add a new file"
[dev 3b235ed] add a new file1 file changed, 1 insertion(+)create mode 100644 code2.txt

(3)切换回master分支,编辑code.txt并进行一个提交。

[root@test-zookeeper-go-016003 git_test]# git checkout master
Switched to branch 'master'
[root@test-zookeeper-go-016003 git_test]# echo "*******">>code.txt
[root@test-zookeeper-go-016003 git_test]# git add code.txt
[root@test-zookeeper-go-016003 git_test]# git commit -m "add a new line ***"
[master dd6ffc2] add a new line ***1 file changed, 1 insertion(+)

(4)合并dev分支的内容到master分支。

# git merge dev

(5)出现如下提时,这是因为这次不能进行快速合并,所以git提示输入合并说明信息,输入之后合并内容之后git会自动创建一次新的提交。

将第一行内容替换为新版本的版本名,如下:

保存后会,自动提交。
(6)使用分支命令查看分支信息

(7)删除dev分支。

# git branch -d dev
Deleted branch dev (was 3b235ed).

关于禁用快速合并
如果要强制禁用fast forward模式,git就会在merge时生成一个新的commit,这样的好处是:从分支历史上就可以看出分支信息。
(1)创建并切换到dev分支。

[root@test-zookeeper-go-016003 git_test]# git checkout -b dev
Switched to a new branch 'dev'

(2)修改code.txt内容,并提交一个commit。

[root@test-zookeeper-go-016003 git_test]# echo "66666666">>code.txt
[root@test-zookeeper-go-016003 git_test]# git add code.txt
[root@test-zookeeper-go-016003 git_test]# git commit -m 'add 666'
[dev 5236145] add 6661 file changed, 1 insertion(+)

(3)切换回master分支。

[root@test-zookeeper-go-016003 git_test]# git checkout master
Switched to branch 'master'

(4)准备合并dev分支,请注意–no-ff参数,表示禁用Fast forward:

[root@test-zookeeper-go-016003 git_test]# git merge --no-ff -m "不使用快速合并" dev
Merge made by the 'recursive' strategy.code.txt | 1 +1 file changed, 1 insertion(+)

因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。
(5)合并后,我们用git log看看分支历史:
可以看到,不使用Fast forward模式,merge后就像这样:


思考:在什么情况下,应该禁用快速合并呢
在下篇博文Bug分支中,就有讲述

------做运维之前很矫情的小年轻-----

git--分支管理策略相关推荐

  1. Git进阶(五):git 分支管理策略

    文章目录 一.企业级项目分支策略 1.1 主分支 master 1.2 开发分支 develop 1.3 功能分支 feature 1.4 预发布分支 release 1.5 bug 分支 fixbu ...

  2. Git 分支管理策略

    分支管理策略 下面我们来说一下一般企业中开发一个项目的分支策略: 主分支 master 开发分支 develop 功能分支 feature 预发布分支  release bug 分支 fixbug 其 ...

  3. **Git分支管理策略

    http://www.ruanyifeng.com/blog/2012/07/git.html 如果你严肃对待编程,就必定会使用"版本管理系统"(Version Control S ...

  4. [转]Git分支管理策略

    如果你严肃对待编程,就必定会使用"版本管理系统"(Version Control System). 眼下最流行的"版本管理系统",非Git莫属. 相比同类软件, ...

  5. git 分支管理策略 与 物理实现 --author by阮一峰 小鱼

    -------------------------下面是阮一峰博士的git branch 逻辑结构图示---------------------------------------------- 如果 ...

  6. git 分支管理策略(7)

    通常,合并分支时,如果可能,Git会用Fast forward模式.但这种模式下,删除分支后,会丢掉分支信息. 如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的comm ...

  7. 敏捷团队Git分支版本管理策略| TBD++ Flow

    ​简介 随着Git的普及,为了更高效地进行团队协作开发,人们通过经验总结研究出了几套适用于各种团队和项目的分支管理策略,上篇文章我们讲解了 Git Flow 代码版本管理策略,它对版本控制较为严格,主 ...

  8. git使用指南及分支管理策略

    Git是什么? Git是一个开源的分布式的版本管理工具. 为什么要使用GIt? Git是目前世界上最先进的版本管理工具,尤其在分支管理上表现突出,能够极为方便地解决开发中的版本问题. Git如何使用? ...

  9. Git 企业中常用分支管理策略

    Git 企业中常用分支管理策略 一般企业中开发一个项目的分支策略 主分支 master 开发分支 develop 功能分支 feature 预发布分支 release bug 分支 fixbug 其它 ...

  10. 【Git学习笔记5】以普通模式合并(--no-ff)、push到远程库及分支管理策略

    一.以普通模式合并(--no-ff) 合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息,啥?不记得啦?那等会我们学习完给你再举个栗子吧,看看这个f ...

最新文章

  1. pythonidle新建文件_(一)Python入门:04IDLE开发环境的使用-建立Python源文件
  2. “天下第一长联”与“元跨革囊”
  3. 光模块功能失效的原因有哪些?
  4. day52 Django全流程
  5. node环境变量_实际使用Node环境变量的方法如下
  6. linux6.5修复引导,CentOS 6.5 修复grub引导
  7. 机器学习案例系列教程——优化方法总结(梯度下降法、牛顿法、拟牛顿法、共轭梯度法等)
  8. request,response,session
  9. python中的struct
  10. EF中DataContext创建的两段代码收藏
  11. matlab相对误差,相对误差与相对误差限定义-精品课程-山东科技大学.PPT
  12. 135、137、138、139和445端口解释及关闭方法
  13. 微信小程序测试应该注意的事项
  14. 青岛著名地标“石老人”坍塌!数字化三维重建助力景观修复!
  15. MBA书籍推荐:打造商业思维,看这一本书就够了
  16. 高端进销存管理系统源码+微信小程序,
  17. 多用户商城系统流程设计和流程图,以及退换货流程图说明
  18. Unity Animator 动画没切换
  19. 机器学习系列5-梯度下降法
  20. Root检测与反检测

热门文章

  1. 如何用Windows Live Writer写网易博客
  2. shopnc 发票项目
  3. 关于级数∑(x n-x n-1)一致收敛性的一点儿理解
  4. leetcode 113. 路径总和 II
  5. 机器学习规则 (Rules of Machine Learning): 关于机器学习工程的最佳实践
  6. linux删除旧网卡,如何删除旧网卡驱动
  7. 心电图前波过多_心电图写着:T波倒置,就是心肌缺血吗?医生:不能如此草率...
  8. python中numeric_Python中的Numeric
  9. 给定一个排序好的数组,插入一个数,使其仍然有规律不使用排序算法
  10. 012-简单辅助元素