通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。

如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

下面我们实战一下--no-ff方式的git merge

首先,仍然创建并切换dev分支:

$ git checkout -b dev
Switched to a new branch 'dev'

修改readme.txt文件,并提交一个新的commit:

$ git add readme.txt
$ git commit -m "add merge"
[dev 6224937] add merge1 file changed, 1 insertion(+)

现在,我们切换回master

$ git checkout master
Switched to branch 'master'

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

$ git merge --no-ff -m "merge with no-ff" dev
Merge made by the 'recursive' strategy.readme.txt |    1 +1 file changed, 1 insertion(+)

因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。

合并后,我们用git log看看分支历史:

$ git log --graph --pretty=oneline --abbrev-commit
*   7825a50 merge with no-ff
|\
| * 6224937 add merge
|/
*   59bc1cb conflict fixed
...

可以看到,不使用Fast forward模式,merge后就像这样:

分支策略

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

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

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

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

所以,团队合作的分支看起来就像这样:

小结

Git分支十分强大,在团队开发中应该充分应用。

合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

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

  1. git master主分支_Git分支管理策略及简单操作

    前几天整理了一下之前项目的开发代码,当时使用了Git来进行代码版本管理.虽然本人熟悉常用的Git操作,但是对分支的管理经验非常欠缺.拿这个项目来说,在项目中有不下20个分支,每个分支间的继承关系相当之 ...

  2. 使用VSTS的Git进行版本控制(五)——从Team Services Portal管理分支

    使用VSTS的Git进行版本控制(五)--从Team Services Portal管理分支 任务1:创建新分支 1.登录Visual Studio Team Services账号 2.打开Code ...

  3. Git分支:什么是分支,如何管理分支?

    一.前言 如果有人问你,当下最流行的"版本管理系统"(Version Control System)是什么,那你一定要毫不犹豫的告诉他,非Git莫属. Git 相比同类软件,Git ...

  4. 使用VSTS的Git进行版本控制(四)——在Visual Studio中管理分支

    使用VSTS的Git进行版本控制(四)--在Visual Studio中管理分支 可以从web版Team Services Git repo 的Branches视图中管理工作.定制视图来跟踪最关注的分 ...

  5. git上传分支的原理_git系列教程四:分支和分支管理

    一些零碎的知识 修改最后一次提交 实际开发中,你可能会遇到下边这两种情况: Situation One:版本刚一提交(commit)到仓库,突然想起漏掉两个文件还没有添加(add).就好比你是老司机, ...

  6. Git管理 — 分支管理

    目录 1.创建分支 1.1.从命令行上创建分支 1.2.从可视化工具上创建分支 2.更新本地仓库 3.查询本地仓库的分支信息 4.切换分支 5.合并分支 6.删除分支 在项目的开发过程中,很多时候都会 ...

  7. 【04】进阶:Git系统中的分支操作与管理

    总第95篇 接上篇,本篇文章将详细梳理Git系统分支相关的操作,包括分支的新建与合并.分支的管理及变基等.Git的分支模型非常轻量型,你可以非常方便地创建分支以及在不同的分支间切换.可以说,Git的分 ...

  8. Github分支创建、管理、下载与上传

    当我们想进行文件备份.文件分类.版本更新.分工合作等工作时,对github仓库进行分支就变得非常重要. 一.创建分支 在Github仓库创建时会生成默认的主分支,一般名称为 main ,我们可以以主分 ...

  9. Git版本控制管理——分支

    实际开发中,会在当前开发线路上拉出另外的开发线进行开发,比如软件功能已经比较稳定的话,在后续功能的开发过程中,就很可能会拉出独立的支线进行开发,待功能开发完毕后,再将该直线合入稳定的主线中. 当然实际 ...

  10. git学习二——多分支的git管理

    工作空间准备 lenovo@lenovo-PC MINGW64 /g/Git_learn/tt3/tt2 $ git init lenovo@lenovo-PC MINGW64 /g/Git_lear ...

最新文章

  1. 学习UI设计能做什么
  2. fatfree-f3小型php框架(二)
  3. Hello Blazor:(6)你必须踩过这5个坑,才算学会部署Blazor WebAssembly到静态网站
  4. NC51189 Mondriaan‘s Dream
  5. MySQL—设置数据库(库、表等)不区分大小写
  6. System Center 2012 R2 ——基础篇
  7. hihoCoder-1037-数字三角形(dp)
  8. docker commit新镜像之后删除旧镜像
  9. android9.0 framewrok.jar push到system/framework不起作用,解决方式
  10. 罗永浩给俞敏洪的求职信
  11. 郑州大学期末php试题,郑州大学英语期末考试试题及答案
  12. Centos7 Zabbix监控部署
  13. html5制作多彩照片墙,照片墙不是乱贴的,教你1分钟打造高逼格照片墙!
  14. 拨号不能建立远程计算机的连接,彻底解决Win8、Win10系统宽带拨号出现“错误720:不能建立到远程计算机的连接”的问题...
  15. matlab工作区中的参数清除,【单选题】清空MATLAB工作区中所有变量的命令是_____。 (7.0分) A. clc B. c...
  16. PCIe学习(一):PCIe基础及生成PIO例程分析
  17. D语言游戏编程(1):工作环境
  18. 详解标准方程法(内含公式推导和代码)
  19. uefi启动linux内核,uefi下如何启动linux?
  20. 使用DevExpress的PdfViewer控件加载http传输文件

热门文章

  1. 使用Custom.pll修改标准Form的LOV
  2. HDU - 7091 重叠的子串(后缀自动机+set启发式合并+树上倍增)
  3. c++中std::set自定义去重和排序函数
  4. CodeForces - 1408D Searchlights(思维)
  5. HDU - 2859 Phalanx(动态规划/哈希表)
  6. mvc登录设计的详细设计_产品设计:APP指纹密码登录设计
  7. linux uname内核,Linux下confstr与uname函数_获取C库与内核信息
  8. 安装php-redis遇到Error: Package: php-pecl-igbinary-1.2.1-1.el7.x86_64 (epel)
  9. Zookeeper 安装和配置---学习二
  10. 给Source Insight做个外挂系列之四--分析“Source Insight”