搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
菜鸟追梦旅行
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
操作系统教程 ( Linux) 版 学习笔记_自己话讲._现在linux主要使用在pc机和嵌入式,或者一些小型企业的服务器;而unix垄断着大型企
2
Ubantu系统在anaconda中安装pytorch_ubuntu zai anaconda anzhuang pytorch
3
图解 MySQL 索引:B-树、B+树,终于搞清楚了_mysql索引树
4
在kali内 安装漏洞扫描神器awvs_kali awvs下载安装
5
你真的懂Transformer了吗?超全分析模型的参数量、计算量!
6
android radiobutton自定义图片,android 自定义RadioButton(单选按钮)图标随便定.
7
数据结构【队列】
8
大数据技术之Flume(理论)_flume技术
9
OpenAI、微软、智谱AI 等全球 16 家公司共同签署前沿人工智能安全承诺
10
万字长文精解目标检测中的TP、FP、FN、TN、Precision、Recall 、 F1 Score、AP、mAP与AR 。附代码实现。_计算yolov5tp, fp, fn, recall和precision
当前位置:
article
> 正文
Git 分支管理及规范_git分支管理规范
作者:菜鸟追梦旅行 | 2024-06-05 04:20:16
赞
踩
git分支管理规范
1.
分支管理
代码提交在应该提交的分支
随时可以切换到线上稳定版本代码
多个版本的开发工作同时进行
2.
提交记录的可读性
准确的提交描述,具备可检索性
合理的提交范围,避免一个功能就一笔提交
分支间的合并保有提交历史,且合并后结果清晰明了
避免出现过多的分叉
3.
团队协作
明确每个分支的功用,做到对应的分支执行对应的操作
合理的提交,每次提交有明确的改动范围和规范的提交信息
使用
Git
管理版本迭代、紧急线上
bug fix
、功能开发等任务
二、分支管理
分支命名
master
分支
master
为主分支,主分支,永远处于稳定状态,对应当前线上版本
以
tag
标记一个版本,因此在
master
分支上看到的每一个
tag
都应该对应一个线上版本
master
分支一般由
develop
以及
hotfix
分支合并,任何时间都不能直接修改代码
不允许在该分支直接提交代码
develop
分支
develop
为开发分支,始终保持最新完成以及
bug
修复后的代码
,
包含了项目最新的功能和代码,
所有开发都依赖
develop
分支进行
一般开发的新功能时,
feature
分支都是基于
develop
分支下创建
小的改动可以直接在
develop
分支进行,改动较多时切出新的
feature
分支进行
推荐的做法
:
develop
分支作为开发的主分支,也不允许直接提交代码。小改动也应该以
feature
分支提
merge request
合并,目的是保证每个改动都经过了强制代码
review
,降低代码风险
feature
分支
分支命名
: feature/
开头的为特性分支, 命名规则
: feature/user_module
、
feature/cart_module
开发新功能时,以
develop
为基础创建
feature
分支
开发新的功能或者改动较大的调整,从
develop
分支切换出
feature
分支,分支名称为
feature/xxx
开发完成后合并回
develop
分支并且删除该
feature/xxx
分支
release
分支
发布分支,新功能合并到
develop
分支,准备发布新版本时使用的分支
,
预发布
发布之前发现的
bug
就直接在这个分支上修复,确定准备发版本就合并到
master
分支,完成发
布,同时合并到
develop
分支
当有一组
feature
开发完成,首先会合并到
develop
分支,当
develop
分支完成功能合并和部分
bug fix
,准备发布新版本时或者进入提测时,会创建
release
分支如果测试过程中若存在
bug
需要
修复,则直接由开发者在
release
分支修复并提交。当测试完成之后,合并
release
分支到
master
和
develop
分支,此时
master
为最新代码,用作上线
hotfix
分支
分支命名
: hotfix/
开头的为修复分支,它的命名规则与
feature
分支类似
当线上版本出现
bug
时,从
master
分支切出一个
hotfix/xxx
分支,完成
bug
修复,然后将
hotfix/xxx
合并到
master
和
develop
分支
(
如果此时存在
release
分支,则应该合并到
release
分支
)
,合并完成后删除该
hotfix/xxx
分支
以上就是在项目中应该出现的分支以及每个分支功能的说明。 其中稳定长期存在的分支只有
master
和
develop
分支,别的分支在完成对应的使命之后都会合并到这两个分支然后被删除。简单总结如下:
master
分支
:
线上稳定版本分支
develop
分支
:
开发分支,衍生出
feature
分支和
release
分支
release
分支
:
发布分支,准备待发布版本的分支,存在多个,版本发布之后删除
feature
分支
:
功能分支,完成特定功能开发的分支,存在多个,功能合并之后删除
hotfix
分支
:
紧急热修复分支,存在多个,紧急版本发布之后删除
三、
Git
日志规范
四、分支提交操作建议
分支间操作注意事项
在团队开发过程中,避免不了和其他人一起协作,同时也会遇到合并分支等一些操作,这里提交
2
个个
人觉得比较好的分支操作规范。
同一分支
git pull
使用
rebase
在一个团队协作的项目中,开发人员需要经常提交一些代码去修复
bug
或者实现新的
feature
。而项目中的文
件和实现什么功能、解决什么问题都会渐渐淡忘,最后需要浪费时间去阅读代码。但是好的日志规范
commit
messages
编写有帮助到我们,它也反映了一个开发人员是否是良好的协作者。
看到这样的
•
提交线图,想从中看出一条清晰的提交线几乎是不可能的,充满了
Merge remote-
tracking branch 'origin/xxx' into xxx
这样的提交记录,同时也将提交线弄成了交错纵横的图,
没有了可读性。
q
这里最大的原因就是因为默认的
git pull
使用的是
merge
行为,当你更新代码时,如果本地存在未推送
到远程的提交,就会产生一个这样的
merge
提交记录。因此在同一个分支上更新代码时推荐使用
git
pull --rebase
。
默认的
git pull
行为是
merge
,可以进行如下设置修改默认的
git pull
行为:
#
为某个分支单独设置,这里是设置
dev
分支
git config branch.dev.rebase true
#
全局设置,所有的分支
git pull
均使用
--rebase
git config --global pull.rebase true
git config --global branch.autoSetupRebase always
不要在公共分支使用
rebase
本地和远端对应同一条分支
,
优先使用
rebase,
而不是
merge
关于使用
rebase
还是
merge
git rebase
git rebase
你其实可以把它理解成是
“
重新设置基线
”
,将你的当前分支重新设置开始点。这个时候才能知道你当前分支于
你需要比较的分支之间的差异。
原理很简单:
rebase
需要基于一个分支来设置你当前的分支的基线,这基线就是当前分支的开始时间轴向后
移动到最新的跟踪分支的最后面,这样你的当前分支就是最新的跟踪分支。这里的操作是基于文件事务处理
的,所以你不用怕中间失败会影响文件的一致性。在中间的过程中你可以随时取消
rebase
事务
rebase
会把你当前分支的
commit
放到公共分支的最后面
,
所以叫变基。就好像你从公共分支又重新拉出来
这个分支一样。
举例
:
如果你从
master
拉了个
feature
分支出来
,
然后你提交了几个
commit,
这个时候刚好有人把他开发
的东西合并到
master
了
,
这个时候
master
就比你拉分支的时候多了几个
commit,
如果这个时候你
rebase master
的话,就会把你当前的几个
commit
,放到那个人
commit
的后面。
git merge
merge
会把公共分支和你当前的
commit
合并在一起,形成一个新的
commit
提交
个人推荐大家开发的时候,
尽量及时
rebase
上游分支
(我习惯是每周
merge
一次),有冲突提前
就
fix
掉,即使我们自己的分支开发了很久(哪怕是几个月),也不会积累太多的
conflict
,最后合
并进主分支的时候特别轻松, 非常反对从
master check
出新分支,自己闷头开发几个月,结果最
后
merge
进主分支的时候,一大堆冲突,自己还嗷嗷叫的行为
尽量及时
rebase
上游分支,发现有冲突,
merge
分支冲突解决建议
1.
首先使用
git status
分析原因,是哪个文件出现了冲突,可以使用文本编辑器打开该文件。冲
突产生后,冲突文件会显示以下标记
<<<<<<<
与
=======
之间是本地修改的内容,
=======
与
>>>>>>>
之间是远程修改的内容。
根据这个,对冲突文件进行编辑,在修改完之后,
git add filename
git commit
重新
commit
以下就可以了
2.
如果我们确定远程的分支正好是我们需要的,而本地的分支上的修改比较陈旧或者不正确,那么可
以直接丢弃本地分支内容,运行如下命令
(
看需要决定是否需要运行
git fetch
取得远程分支
)
:
3.
如果我们觉得合并以后的文件内容比价混乱,想要废弃这次合并,回到合并之前的状态,那么可以
运行如下命令:
rebase
过程中出现的冲突
在
rebase
的过程中,也许会出现冲突
(conflict).
在这种情况,
Git
会停止
rebase
并会让你去解决 冲突;
在解决完冲突后,用
"git-add"
命令去更新这些内容的索引
(index),
然后,你无需执行
git-commit,
只要执
行
:
git rebase
--
continue
这样
git
会继续应用
(apply)
余下的补丁
在任何时候,你可以用
--abort
参数来终止
rebase
的行动,并且
"mywork"
分支会回到
rebase
开始前的状
态。
git rebase
--
abort
五、最佳实践
设置好自己的提交用户名和邮箱
$:git reset --hard origin/master
或者
$:git reset --hard ORIG_HEAD
`git reset --hard HEAD
git config
--
global user
.
name
"Bit.Lee"
git config
--
global user
.
email zeroming
@
163
.
com
新功能重新建立功能分支
当您继续开发功能分支时,请经常根据
master
分支对其进行重新设置。 这意味着要定期执行以下步
骤,
这些步骤会在功能分支中
重写历史记录
(这不是一件坏事)。 首先,它使您的功能分支看起来像
master
并进行了所有更新以达到
master
要求。 然后,您对功能分支的所有提交都会在顶部重放,因
此它们会顺序出现在
Git
日志中。 您可能会在一路上遇到需要解决的合并冲突,这可能是一个挑战。 但
是,这是处理合并冲突的最佳方法,因为它只会影响功能分支。
解决所有冲突并进行回归测试之后,如果准备好将功能部件合并回
master
,请再执行一次上述变基步
骤,然后执行合并,
在此期间,如果其他人推动更改以
master
与您的冲突,则
Git
合并将再次发生冲突。 您需要解决它们
并重复进行回归测试
使用标签
完成测试并准备从
master
分支部署软件后,或者如果出于其他任何原因想要将当前状态保留为重要的
里程碑,请创建
Git
标签。分支积累与提交相对应的更改历史记录时,标签是该时刻分支状态的快照。
可以将标签视为无历史记录的分支,也可以将其视为指向创建标签之前特定提交的命名指针。配置控制
是关于在各个里程碑保留代码状态。 能够复制任何里程碑的软件源代码,以便在大多数项目中都可以在
需要时进行重建。
Git
标签为此类代码里程碑提供了唯一的标识符。 标记很简单:
考虑一种方案,其中与给定
Git
标签相对应的软件已分发给客户,并且客户报告了问题。 尽管存储库中
的代码可能会继续发展,但通常需要回到与
Git
标签相对应的代码状态,以准确地再现客户问题以创建
错误修复程序。 有时,较新的代码可能已经解决了该问题,但并非总是如此。 通常,您需要签出特定
标签并从该标签创建分支:
git checkout master
git pull
# name of your hypothetical feature branch
git checkout feature-xyz
# may need to fix merge conflicts in feature-xyz,
变基
git rebase master
git checkout master
git pull
#
合并分支到主分支
git merge feature-xyz
git tag milestone-id -m "short message saying what this milestone is about"
# don't forget to explicitly push the tag to the remote
git push --tags
# checkout the tag that was distributed to the customer
git checkout milestone-id
# create new branch to reproduce the bug
git checkout -b new-branch-name
七、参考资料
https://jaeger.itscoder.com/dev/2018/09/12/using-git-in-project.html
https://nvie.com/posts/a-successful-git-branching-model/
Git Flow
https://www.zhihu.com/question/36509119
git rebase
和
merge
的优缺点
https://www.cnblogs.com/marblemm/p/7161614.html
merge
和
rebase
的适用场景及区别
https://blog.csdn.net/cumj63710/article/details/107406830
Git
的团队的
6
种最佳实践
https://www.jianshu.com/p/ec38e27c09e6
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/674758
推荐阅读
article
python
——
if
语句
_
python
单行
if
...
python
条件控制——
if
语句
的使用_
python
单行
if
python
单行
if
...
赞
踩
article
智慧
养老
管理系统
智慧
养老
管理软件
养老
机构
管理系统
_
智慧
养老
移动端...
仓库列表 供应商列表 药品类型列表 药品列表 药品入库单 药品入库列表 药品入库明细 药品出库列表 药品出库明细。2. ...
赞
踩
article
逻辑
回归
原理详解-附案例及源码(一)
_
实验
1
逻辑
回归
...
对
逻辑
回归
涉及数学基础进行讲解
_
实验
1
逻辑
回归
实验
1
逻辑
回归
...
赞
踩
article
找出
不是
两个
数组
共有
的
元素
_
7
-2
找出
不是
两个
数组
共有
的
元素
...
【问题描述】输入一个正整数n(1<10),再输入n个整数数放入
数组
a中;然后输入一个正整数m(1<10),再输入m个整数...
赞
踩
article
esp8266
(
MQTT
固件)+AT指令
连接
阿里
云物联网平台_
at
连接
阿里
云...
esp8266
+AT指令
连接
阿里
云物联网平台_
at
连接
阿里
云
at
连接
阿里
云 ...
赞
踩
article
大数据
知识
图谱
之深度学习——
基于
BERT
+
LSTM
+CRF深度学习识别
模型
医疗
知识
图谱
问答可视化系统...
知识
图谱
是将
知识
连接起来形成的一个网络。由节点和边组成,节点是实体,边是两个实体的关系,节点和边都可以有属性。
知识
图谱
除...
赞
踩
article
Devin
内测注册全攻略:一文带你快速体验最新
AI
软件
工程师
技术
️_
devolved
ai注册...
AI
软件
工程师
技术
在未来将继续快速发展,为各行各业带来更多创新应用。然而,随着
技术
的发展,也面临着一些挑战,如数据隐私、...
赞
踩
article
stm32
学习之
esp8266
连接
阿里
云
_
stm32
esp8266
是怎么
连接
阿里
云
的
...
文章内容仅个人
的
理解,如有错误还请各位多多包涵参考:b站:海创电子工作室,漫天飞羽zz硬件单片机:
stm32
f103c8...
赞
踩
article
头歌:
Spark
Streaming
_第1关:套
接字
流实现
黑名单
过滤
...
套
接字
流是通过监听Socket端口接收的数据,相当于Socket之间的通信,任何用户在用Socket(套
接字
)通信之前,...
赞
踩
article
技术
与
业务
_
业务
和
技术
的
区别...
阅读此博客预计消耗你5~10分钟
的
时间,欢迎一起评论交流1.
技术
我们理解
的
技术
,就是系统用户在页面上看到
的
内容以及操作...
赞
踩
article
【
华为
OD
机考 统一考试机试
C
卷】最多
购买
宝石
数目 (
C
语言
)...
橱窗里有一排
宝石
,不同的
宝石
对应不同的价格,
宝石
的价格标记为 gems[i]0 ≤ i < nn = gems.leng...
赞
踩
article
测试
技术
方法
_
测试
技术
方法
研究...
等价类划分类什么是等价类 等价类是某个输入域的集合,在这个集合中每个输入条件都是等效的。如果其中一个的输入不能导致问题发...
赞
踩
article
如何
构建
高效
测试
团队
,
你必须知道的11招!_
测试
团队
建设...
构建
高效
测试
团队
对于确保软件质量和提升用户体验至关重要。通过实施这11招
,
你可以逐步
构建
高效
测试
团队
,
提高软件质量
,
降低...
赞
踩
article
<
AIX
>《
AIX
RAID
操作
之LV逻辑卷
镜像
制作,即
lvcopy
操作
》_
aix
镜像
...
根据2.2.2章节,知道,test逻辑卷占用5个PPs,使用的是hdisk7盘。通过将数据分散存储在多个磁盘上,
RAID
...
赞
踩
article
IT
项目
管理
| 使用
业务
、
组织
、
技术
三维模型
系统管理
方法
分析
某校园
项目
的可行性_
业务
组织
技术
三球是...
一
、
知识背景每个
项目
是唯一的
、
动态的,
项目
环境也是这样。所以系统思维显得尤为重要。系统系统是为实现某种目的而在同一环境中...
赞
踩
article
SQL
优化2023版最新干货总结 -
My
SQL
_方案一
:
开源
工具
调试
工具
:
arthas
运维
工具
...
Mysql是免费的并且也是我们工作中经常用到的关系型数据库,常见的中小企业80%都采用Mysql,Mysql的使用尝尝伴...
赞
踩
article
B
-
样条
曲线
(
B
-
spline
Curve
)总结_
b
样条
曲线
...
概述
B
-
样条
曲线
,是
B
-
样条
基函数的线性组合,是贝塞尔
曲线
的一般化。给定n+1个控制点,P0,P1, ..., Pn以及...
赞
踩
article
Mysql
主从
之
keepalive
+
MySQL
高
可用
_
mysql
主从
加
keepalive
d...
Keepalived是一个开源的高
可用
性解决方案,它可以在多个服务器之间实现负载均衡和故障切换。虚拟IP(VIP):Ke...
赞
踩
article
曲线
生成
| 图解B
样条
曲线
生成
原理(
基本概念
与
节点
生成
算法)_b
样条
曲线
...
为了解决贝塞尔
曲线
无法局部修正、控制性减弱、
曲线
次数过高、不易拼接的缺陷,引入B
样条
曲线
(B-Spline)。本文介绍B...
赞
踩
article
软件
测试
面试题:
软件
验收
测试
的
合格
通过
准则?_以下哪些条件属于
软件
验收
测试
的
通过
标准? a.
所有
在需...
A.
软件
需求
分析
说明书
中定义
的
所有
功能已全部实现,性能指标全部达到要求。B.
所有
测试
项没有残余一级、二级和三级错误。C....
赞
踩
相关标签
python
大数据
开发语言
人工智能
产品运营
逻辑回归
机器学习
c++
c语言
阿里云
物联网
深度学习
知识图谱
stm32
学习
嵌入式硬件
windows
hive
spark
hbase
hadoop
zookeeper
其他
经验分享
华为od