Git 分支管理及规范

这篇具有很好参考价值的文章主要介绍了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
git分支管理规范,杂谈,git,github

 文章来源地址https://www.toymoban.com/news/detail-609986.html

七、参考资料
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 

到了这里,关于Git 分支管理及规范的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Git 与 Maven:企业级版本管理与版本控制规范设计

    当今,许多开发人员熟悉 GitFlow 工作流程,但往往忽略了 GitFlow 如何与 Maven 版本控制结合,尤其是在管理 snapshot 和 release 版本时的最佳实践。本文旨在整合 GitFlow 工作流程与 Maven 版本管理,提出一个统一的企业级规范,以供开发人员参考。 GitFlow 是一种流行的分支管理模型

    2024年02月04日
    浏览(51)
  • 如何通过git指令加入管理者仓库并提交分支(Github Gitee)

    GitHub: https://github.com/ Gitee : https://gitee.com/ 打开对应的网站之后可以直接通过邮箱创建账户 下载git 安装地址: https://git-scm.com/download 安装Git后右键桌面可显示 Git Bash 和 Git GUI Git GUI: Git提供的图形界面工具 Git Bash: Git提供的命令行工具 git基础配置 右键打开Git Bash输入 gi

    2024年02月07日
    浏览(67)
  • git分支命名规范

    格式: master 功能概述: 永远是可用的稳定版本,不能直接在该分支上开发。 1.开发主分支 格式: dev 功能概述: 所有新功能以这个分支来创建自己的开发分支,该分支只做合并操作,不能直接在该分支上进行开发。 2.功能开发分支 格式: feature-{功能描述}-{姓名拼音首字母连写}

    2024年02月12日
    浏览(39)
  • 编码规范、Git分支整理

    包命名规范 采用反域名命名规则,全部使用小写字母。一级包名为com,二级包名kl(为公司名称,可以简写),三级包名pos(根据应用进行命名),四级包名activity或adapter等(模块名或层级名),根据实际情况也是可以用五级包名,六级包名。例如:com.kl.pos.activity | com.kl.p

    2024年02月09日
    浏览(51)
  • 安全需求规范和管理指南

    安全需求规范 安全需求的标记法 对应于2.2章节中的安全需求特性,通过如下组合来定义安全需求: 自然语言(适应于较高层面的安全需求,如功能和技术安全需求); 表1中所列举方法(适应于较低层面的安全需求,如软件和硬件安全需求); 表1 定义安全需求 方法 ASIL

    2024年02月05日
    浏览(45)
  • Apache DolphinScheduler数仓任务管理规范

    前言: 大数据领域对多种任务都有调度需求,以离线数仓的任务应用最多,许多团队在调研开源产品后,选择Apache DolphinScheduler(以下简称DS)作为调度场景的技术选型。得益于DS优秀的特性,在对数仓任务做运维和管理的时候,往往比较随意,或将所有任务节点写到一个工作

    2024年02月19日
    浏览(40)
  • 新能源动力电池安全存放管理规范

    存放信息确认 电池存放方应向电池托运方获取动力电池运输需求信息单,信息单上至少应包括电池编码、电池类 型、电池SOC(电池荷电状态)、规格尺寸、电池数量、电池来源、电池去向企业等信息,保留信息单 三年备查。如属于故障电池包,还应包括电池包故障等级、故

    2024年02月07日
    浏览(60)
  • 如何保证测试质量之Bug管理规范及流程

    目录 Bug 属性规范及流程  1 1.   目的  2 2.   范围  3 3.   工具  3 4.   角色和职责  3 5.   Bug 属性定义  3 5.1 . bug 类型  4 5.2 . bug 严重性  4 5.3   bug 优先级  5 6.   Bug 管理流程  6 6.1 提交 bug  6 6.2 分配 bug  6 6.3 解决 bug  7 6.4 验证 bug  7 6.5 遗留 bug  7 6.5.1 跟踪遗留 bug  

    2023年04月13日
    浏览(38)
  • 电子作业票如何实现特殊作业审批规范管理?

    电子作业票系统是针对传统作业许可管理存在的问题和缺陷,结合物联网、云计算和大数据等新一代信息技术,以企业作业安全为主线,现场作业与安全监控相结合,通过识别、分析与控制非常规作业过程中的危险及隐患,智能化调度和协调相关区域作业,直观显示属地作业

    2024年02月13日
    浏览(37)
  • 如何规范综合布线光纤跳线管理的具体事项

    光纤跳线概念 光纤跳线用来做从设备到光纤布线链路的跳接线。有较厚的保护层,一般用在光端机和终端盒之间的连接。 对于综合布线来说,电信间及设备间是数据、语音、图像三类业务的汇聚地,其重要性不言而喻。但是对于它们的整体设计、设备定型、硬件配置、施工

    2024年02月07日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包