大家来谈一谈 Git 提交的规范

本贴最后更新于 1746 天前,其中的信息可能已经物是人非

最近要带一批实习生,由于之前本身 Git 提交也不是很规范,这次促使团队需要制定一些代码的规范,目前在编写团队的 Git 代码管理规范,想问一下大家平时都是怎么管理的。

  1. 分支的建立维护
  2. tag 的建立
  3. commit message 的填写格式
    ……

请大家在以上几个方面谈一谈自己平时工作中的做法以及效果。
大家可以畅所欲言,自由扩展其他方面。

  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    207 引用 • 358 回帖
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    7549 引用 • 34359 回帖 • 197 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • oathsign 1

    如果题主的库是放在 Github 上的,最好的办法就是符合 Github 的提交规范。例如首字母大写,标题用祈使句,内容和标题隔行写等等这些。因为你符合了这些规范不仅仅发邮件的时候内容清晰 ,而且会有意想不到的福利。例如可以用#+issue 的编号来标记并关闭相关的 issue😋 总之,规范要统一,要重视,更要专业。最讨厌一个项目几千个提交日志全是 commit it! 还不如不写

  • 其他回帖
  • yangyujiao

    哈哈哈。。。
    我们用 svn!!!
    我每次看到开发操作,切换分支,合并代码的都看着累。。。

    不过我们提交日志写的很好,因为我们用 jira,必须带着 jira 号跟描述。我们的每一个任务都有 jira 号,包含需求、bug、数据修复、优化等。

    我以前公司也是用 git,还特意培训过,我记得一家培训的是 git flow 的,一家是培训 github 的。

    2 回复
  • ZephyrJung 1

    我们用 git 没那么多乱七八糟的,master 用于发布,分支用于开发,分支名不限制,但是依我的习惯的话要以开发的目标作为分支名,后缀开发者或者时间之类的,commit message 格式也没限制过,但是尽量保证一次 commit 是完整的
    我还喜欢用 gitemoji 来标记本次提交的标记,可以参考 symphony 的提交记录,我就是从这里学的
    其实比较重要的就是要让开发者知道每次拉分支的时候,从 master 拉去最新的代码再创建

  • someone27889 1 1 评论

    因为管理了好多项目,所以这个方面还是研究过一下子 ,主要使用了 GitFlow 规范
    分支分为
    新功能分支(feature),
    修复分支(fix),
    补丁分支(hotfix),
    版本分支(release),
    主分支(master),
    开发分支(dev)

    具体提交格式为

    <type>[optional scope]: <description>
    
    [optional body]
    
    [optional footer]
    
    * feat 新功能(feature)表示在代码库中新增了一个功能(这和语义化版本中的 [`MINOR`](http://semver.org/#summary) 相对应)
        
    * fix 表示在代码库中修复了一个 bug(这和语义化版本中的 [`PATCH`](http://semver.org/#summary) 相对应)
        
    * docs 文档(documentation
        
    * style (格式化, 缺失分号等; 不包括生产代码变动)
        
    * refactor (重构代码)
        
    * perf (性能优化)
        
    * test (添加缺失的测试, 重构测试, 不包括生产代码变动)
        
    * chore (更新grunt任务等; 不包括生产代码变动)
    
    scope:一个可选的修改范围,用于标识此次提交主要涉及到代码中哪个模块。
    
    description:简明扼要描述本次提交的内容,首字母无需大写,结尾不需要使用 `.`。
    
    optional body:详细描述本次提交,比如此次变更的动机,如需换行,则使用 `|`。
    
    optional footer:描述与之关联的 issue 或 break change。
    

    commit Message 为 :

    fix(module:baseuser): fix username field error
    
    BREAKING CHANGE: xxxxxx
    
    feature(module:auth): add oauth2 module
    
    BREAKING CHANGE: 原登陆方式发生改变,现在提供jar oauth.auth(username,password):true|false
    

    每次写新特性的时候要在 dev 拉一下最新代码然后 迁出 特性分支 比如要增加一个 用户的新增功能 分支名称可以为 feature/userAdd

    然后开发完了推上去给 dev 分支合并,合并完了跑 ci 测试,ci 测试没问题,可以合并到 master
    当 master 改动较多的时候就可以 发布一个 release 版本 从 master/dev 迁出 然后打 tag ,写 CHANGELOG.md(应该有工具能生成), 发布到 gitlab/github,然后然后然后合并到 master

    资料转自:https://semlinker.com/ng-verson-manage/
    如果多人开发,那么请配置 validate-commit 来确保所有人提交格式符合 GitFlow 规范:https://blog.eiyouhe.com/articles/2019/08/19/1566176660956.html?utm_source=hacpai.com#b3_solo_h1_7
    另外 CHANGELOG 也有 Cli,可以试试:https://blog.eiyouhe.com/articles/2019/08/19/1566176660956.html#b3_solo_h2_12

    所以 100 分给我吧,我求求你了trollface

    3 操作
    someone27889 在 2019-12-18 09:04:50 更新了该回帖
    someone27889 在 2019-12-18 09:03:48 更新了该回帖
    someone27889 在 2019-12-18 09:00:23 更新了该回帖
    你先别求我。。我看看其他人的建议。分给你说不定别人都不屑回答了trollface
    someone9891
  • 查看全部回帖

推荐标签 标签

  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    70 引用 • 533 回帖 • 759 关注
  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    123 引用 • 168 回帖 • 1 关注
  • SendCloud

    SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。

    2 引用 • 8 回帖 • 465 关注
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 1 关注
  • 锤子科技

    锤子科技(Smartisan)成立于 2012 年 5 月,是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。

    4 引用 • 31 回帖 • 2 关注
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖
  • Eclipse

    Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

    75 引用 • 258 回帖 • 634 关注
  • Mac

    Mac 是苹果公司自 1984 年起以“Macintosh”开始开发的个人消费型计算机,如:iMac、Mac mini、Macbook Air、Macbook Pro、Macbook、Mac Pro 等计算机。

    165 引用 • 594 回帖 • 1 关注
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    88 引用 • 1234 回帖 • 425 关注
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    11 引用 • 90 回帖 • 1 关注
  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖 • 2 关注
  • 电影

    这是一个不能说的秘密。

    120 引用 • 598 回帖
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖 • 1 关注
  • uTools

    uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。

    5 引用 • 13 回帖 • 3 关注
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    139 引用 • 268 回帖 • 88 关注
  • CodeMirror
    1 引用 • 2 回帖 • 130 关注
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    116 引用 • 99 回帖 • 235 关注
  • CongSec

    本标签主要用于分享网络空间安全专业的学习笔记

    6 引用 • 1 回帖 • 1 关注
  • 外包

    有空闲时间是接外包好呢还是学习好呢?

    26 引用 • 232 回帖
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1081 引用 • 3459 回帖 • 232 关注
  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    26 引用 • 35 回帖 • 3 关注
  • TGIF

    Thank God It's Friday! 感谢老天,总算到星期五啦!

    287 引用 • 4484 回帖 • 669 关注
  • 安全

    安全永远都不是一个小问题。

    200 引用 • 816 回帖
  • WebSocket

    WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。

    48 引用 • 206 回帖 • 370 关注
  • Rust

    Rust 是一门赋予每个人构建可靠且高效软件能力的语言。Rust 由 Mozilla 开发,最早发布于 2014 年 9 月。

    58 引用 • 22 回帖 • 3 关注
  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 47 关注