分支管理---分支管理策略
通常,合并分支时,如果可能,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
合并就看不出来曾经做过合并。
分支管理---分支管理策略相关推荐
- git master主分支_Git分支管理策略及简单操作
前几天整理了一下之前项目的开发代码,当时使用了Git来进行代码版本管理.虽然本人熟悉常用的Git操作,但是对分支的管理经验非常欠缺.拿这个项目来说,在项目中有不下20个分支,每个分支间的继承关系相当之 ...
- 使用VSTS的Git进行版本控制(五)——从Team Services Portal管理分支
使用VSTS的Git进行版本控制(五)--从Team Services Portal管理分支 任务1:创建新分支 1.登录Visual Studio Team Services账号 2.打开Code ...
- Git分支:什么是分支,如何管理分支?
一.前言 如果有人问你,当下最流行的"版本管理系统"(Version Control System)是什么,那你一定要毫不犹豫的告诉他,非Git莫属. Git 相比同类软件,Git ...
- 使用VSTS的Git进行版本控制(四)——在Visual Studio中管理分支
使用VSTS的Git进行版本控制(四)--在Visual Studio中管理分支 可以从web版Team Services Git repo 的Branches视图中管理工作.定制视图来跟踪最关注的分 ...
- git上传分支的原理_git系列教程四:分支和分支管理
一些零碎的知识 修改最后一次提交 实际开发中,你可能会遇到下边这两种情况: Situation One:版本刚一提交(commit)到仓库,突然想起漏掉两个文件还没有添加(add).就好比你是老司机, ...
- Git管理 — 分支管理
目录 1.创建分支 1.1.从命令行上创建分支 1.2.从可视化工具上创建分支 2.更新本地仓库 3.查询本地仓库的分支信息 4.切换分支 5.合并分支 6.删除分支 在项目的开发过程中,很多时候都会 ...
- 【04】进阶:Git系统中的分支操作与管理
总第95篇 接上篇,本篇文章将详细梳理Git系统分支相关的操作,包括分支的新建与合并.分支的管理及变基等.Git的分支模型非常轻量型,你可以非常方便地创建分支以及在不同的分支间切换.可以说,Git的分 ...
- Github分支创建、管理、下载与上传
当我们想进行文件备份.文件分类.版本更新.分工合作等工作时,对github仓库进行分支就变得非常重要. 一.创建分支 在Github仓库创建时会生成默认的主分支,一般名称为 main ,我们可以以主分 ...
- Git版本控制管理——分支
实际开发中,会在当前开发线路上拉出另外的开发线进行开发,比如软件功能已经比较稳定的话,在后续功能的开发过程中,就很可能会拉出独立的支线进行开发,待功能开发完毕后,再将该直线合入稳定的主线中. 当然实际 ...
- git学习二——多分支的git管理
工作空间准备 lenovo@lenovo-PC MINGW64 /g/Git_learn/tt3/tt2 $ git init lenovo@lenovo-PC MINGW64 /g/Git_lear ...
最新文章
- 学习UI设计能做什么
- fatfree-f3小型php框架(二)
- Hello Blazor:(6)你必须踩过这5个坑,才算学会部署Blazor WebAssembly到静态网站
- NC51189 Mondriaan‘s Dream
- MySQL—设置数据库(库、表等)不区分大小写
- System Center 2012 R2 ——基础篇
- hihoCoder-1037-数字三角形(dp)
- docker commit新镜像之后删除旧镜像
- android9.0 framewrok.jar push到system/framework不起作用,解决方式
- 罗永浩给俞敏洪的求职信
- 郑州大学期末php试题,郑州大学英语期末考试试题及答案
- Centos7 Zabbix监控部署
- html5制作多彩照片墙,照片墙不是乱贴的,教你1分钟打造高逼格照片墙!
- 拨号不能建立远程计算机的连接,彻底解决Win8、Win10系统宽带拨号出现“错误720:不能建立到远程计算机的连接”的问题...
- matlab工作区中的参数清除,【单选题】清空MATLAB工作区中所有变量的命令是_____。 (7.0分)
A. clc B. c...
- PCIe学习(一):PCIe基础及生成PIO例程分析
- D语言游戏编程(1):工作环境
- 详解标准方程法(内含公式推导和代码)
- uefi启动linux内核,uefi下如何启动linux?
- 使用DevExpress的PdfViewer控件加载http传输文件
热门文章
- 使用Custom.pll修改标准Form的LOV
- HDU - 7091 重叠的子串(后缀自动机+set启发式合并+树上倍增)
- c++中std::set自定义去重和排序函数
- CodeForces - 1408D Searchlights(思维)
- HDU - 2859 Phalanx(动态规划/哈希表)
- mvc登录设计的详细设计_产品设计:APP指纹密码登录设计
- linux uname内核,Linux下confstr与uname函数_获取C库与内核信息
- 安装php-redis遇到Error: Package: php-pecl-igbinary-1.2.1-1.el7.x86_64 (epel)
- Zookeeper 安装和配置---学习二
- 给Source Insight做个外挂系列之四--分析“Source Insight”