git master主分支_Git分支管理策略及简单操作
前几天整理了一下之前项目的开发代码,当时使用了Git来进行代码版本管理。虽然本人熟悉常用的Git操作,但是对分支的管理经验非常欠缺。拿这个项目来说,在项目中有不下20个分支,每个分支间的继承关系相当之混乱,非常不利于代码的安全管理。因此,通过在网络上的学习,总结了一下关于Git分支管理的策略方法,供后续回顾学习。当然必须承认,代码分支管理策略有很多种,不局限于以下介绍。但是下面介绍的这个分支管理策略非常具有工程借鉴意义,几乎适用于所有开发场景。
▍命名规范
▍主分支master
首先,代码库应该有且仅有一个主分支。所有提供给用户使用的正式版本,都在这个主分支上发布。Git主分支的名字,默认为master。它是自动建立的,版本库初始化以后,默认就是在主分支在进行开发。团队成员从主分支(master)获得的都是处于可发布状态的代码。
▍开发分支develop
日常开发应该在另一条分支上完成。我们把开发用的分支,叫做develop分支。开发分支应该总能够获得最新开发进展的代码。如果想正式对外发布,就在master分支上,对develop分支进行merge。简要步骤如下:
# 在master分支上创建develop分支git checkout -b develop master# 切换到master分支git checkout master# 对develop分支合并到当前master分支git merge --no-ff develop
▍临时分支
除了常设分支以外,还有一些临时性分支,用于应对一些特定场景开发。临时性分支主要有三种:
功能(feature)分支
预发布(release)分支
修补bug(hotfix)分支
这三种分支都属于临时性需要,使用完以后,最好删除,使得代码库的常设分支始终只有master和develop。
Feature分支
feature分支是为了开发某种特定功能,从develop分支上面分出来的。开发完成后,要再并入develop。该分支可以采用feature-xxx的形式命名。简要步骤如下:
# 从develop创建一个功能分支git checkout -b feature-x develop# 开发完成后,将功能分支合并到develop分支:git checkout developgit merge --no-ff feature-x# 删除feature分支git branch -d feature-x
Release分支
release分支是指发布正式版本之前(即合并到master分支之前),我们可能需要有一个预发布的版本进行测试而从develop创建的分支。预发布结束以后,须合并进develop和master分支。它的命名,可以采用release-xxx的形式。
# 创建一个预发布分支git checkout -b release-x develop# 确认没有问题后,合并到master分支git checkout mastergit merge --no-ff release-x# 对合并生成的新节点,做一个标签git tag -a 1.2# 再合并到develop分支git checkout developgit merge --no-ff release-x# 最后,删除预发布分支git branch -d release-x
Hotfix分支
软件正式发布以后,难免会出现bug。这时就需要创建一个分支,进行bug修补。修补bug分支是从Master分支上面分出来的。修补结束以后,再合并进master和develop分支。它的命名,可以采用hotfix-xxx的形式。
# 创建一个修补bug分支git checkout -b hotfix-x master# 修补结束后,合并到master分支git checkout mastergit merge --no-ff hotfix-xgit tag -a 0.1# 再合并到develop分支git checkout developgit merge --no-ff hotfix-x# 删除"修补bug分支"git branch -d hotfix-x
▍总结
上面许多指令使用的--no-ff的意思是no-fast-farward的缩写,使用该命令可以保持更多的版本演进的细节。如果不使用该参数,默认使用了fast-farword进行merge。两者的区别如下图所示:
最后分享一下整体的分支管理策略图示:
公众号回复git获取「分支管理策略图」
参考资料
https://nvie.com/posts/a-successful-git-branching-model
git master主分支_Git分支管理策略及简单操作相关推荐
- git 新建分支并切换到该分支_git分支的创建、删除、切换、合并
1. 先看一下git的命令: 查看本地分支 git branch : 查看远程分支 git branch -r : 切换分支 git checkout -b agrochemical origin/a ...
- git如何选择性合并_Git分支合并选择
用Git进行多人协作开发时,必然会合并代码,解决冲突.然而合并代码也是需要点技巧的,如果对一些关键命令没有理解去使用的话,git的版本演进路线就会变得很乱,从而造成了日后维护的一些麻烦. Git上合并 ...
- 常用的Git命令行指令以及图形化界面的简单操作
命令行操作 常用指令 指令 作用 指令 作用 cd 打开目录 pwd 绝对路径 ls 列出清单 mkdir 新建目录 cp 拷贝 mv 移动 rm 移除 touch 创建文档 一.git版本管理的指令 ...
- git 主干修改合并到分支_git分支与主干合并操作
git分支与主干合并操作 1.主干合并分支 在主干上合并分支 branch (master)git merge branch --squash 提交合并后的代码 (master)git commit ...
- git 列出远程标签_Git 标签管理
Git 可以给仓库历史中的某一个提交打上标签,以示重要.比较有代表性的是人们会使用这个功能来标记发布结点( v1.0 . v2.0 等等). 1 列出标签 在 Git 中列出已有的标签非常简单,只需要 ...
- git reset 怎么还原_git reset –hard后的恢复操作
先说下我遇到的问题和解决办法,然后再放原文. 我遇到的问题 在初始化一个比较大的项目时,由于最后一次commit的文件数量较大,无法成功push,百度无果后想要撤回这次commit,于是手贱用了git ...
- git add后取消_git 必看,各种撤销操作
场景概念说明 首先说明一个概念, git是一个分布式的版本控制工具,分布式即 git 管理的项目是有多个大致平等的仓库的.通过一个例子来说明这个东西. 举一个最简单的使用场景: 你在github 建立 ...
- git config设置用户名_git从安装到多账户操作一套搞定(二)多账户使用
作者:良知犹存 转载授权以及围观:欢迎添加微信:Allen-Iverson-me-LYN 总述 GIT是当今热门代码管理技术,但是如此火的系统,竟然是大神林纳斯花了两周用C写出来的一个分布式版本控制系 ...
- GitLab:合并master主支到develop分支上
git合并主支到分支上 一.将本地分支切换到主支master git checkout master 二.拉取gitlab远程主支仓库到本地 git pull 三.将本地分支切换到分支feature ...
最新文章
- spring17:Bean的生命始末标签@PostConstruct,@PreDestroy和改变作用范围的@Scope标签
- cfile read 最大读取限制_pandas读取表格后的常用数据处理操作
- STL源码剖析 set
- 精品家具办公桌椅企业html5官网模板
- Leo-io 的C语言实现简单五子棋游戏观后感
- c语言学习-猜数字游戏
- linux —— ubuntu 初次安装问题
- Ventoy+WePE 装机教程(装PVE+ESXI等,不用单独费一个U盘)
- 笔记本无线上网卡的种类
- 详解双曲函数(对比三角函数推导)
- 使用QT+webassembly构建在线报表设计器
- qt中的toUtf8, toLatin1, Local8bit编码问题
- nodejs使用emailjs发送邮箱邮件
- Windows动态链接库使用详解
- 问:女孩学编程好就业吗?
- C++Primer笔记-A003-decltype使用
- 26.(cesium篇)cesium军事标绘-攻击箭头编辑修改(燕尾)
- 《微观经济学》 第五章
- Objective-C学习资源
- Python爬虫学习笔记 -- 爬取糗事百科
热门文章
- 容大打印机ip修改工具_M1芯片版Mac无法连接打印机怎么办?
- 软件工程(可行性研究讲解)
- php cannot call constructor,安装ECshop普遍问题的解决方法
- val_loss突然变很大_女朋友突然变得很冷淡是怎么回事?该怎么办
- java emoji显示乱码_Java 解决Emoji表情过滤问题
- 将指定excel的一列数据提取到另一个excel的指定列
- Insql 1.8.2 发布,轻量级 .NET ORM 类库
- Day31 python基础--网络编程基础-socketserver
- linux Postfix + dovecot + extmail + extman + mysql
- JavaOne大事纪:IBM谈OpenJ9和Open Liberty