Py学习  »  Git

建议收藏,这才是最健全的 Git 代码管理规范

鸭哥聊Java • 7 月前 • 165 次点击  

在不少技术群看到,有朋友问:“我们组现在的 Git 分支命名太混乱了,有没有一套大厂在用的标准?”我只能说,真该看看规范了。

就拿我们组早期的 Git 分支结构来说吧,堪称野蛮生长——new_ui_test_01bug_fix_final_final_3zhangsan_temp,这些命名,连 git log 自己都快看吐了,merge 的时候一个不注意就容易踩雷,分分钟把测试环境打成一锅粥。

后来,我们组统一规范以后,整个人都舒服了。你不说规范没用,一用了才知道,这玩意儿就是团队协作的润滑剂。

master 分支

先说最关键的 master 分支,很多新手喜欢直接在 master 上开发,出问题的概率简直不要太高。

master 分支在大厂里,基本只拿来干两件事:第一,作为生产环境的代码来源;第二,只允许 release 或 hotfix 分支合并进来。日常开发?一律滚远点!

这么搞的好处是显而易见的:稳定,出事了可以追溯,代码干净,测试覆盖全面,不会一不小心把“实验代码”扔上线。

所以,如果你下次还想在 master 分支上直接写代码,我建议你先请团队喝杯奶茶赔个不是。

develop 分支

说得好听点,develop 是一个集大家才华于一体的“开发环境分支”;说得现实点,它就是所有 feature、bugfix、style 等代码的“过渡旅馆”。

所有人在 develop 上合并、联调、找 bug,直到稳定之后,才会往下一个环节推进。别看 develop 乱哄哄的,它其实是个真正的“实战沙场”,代码冲突、模块互踢、接口不兼容,全在这里扯皮。越早发现问题,越不容易拖死上线时间。

我们组还有个小技巧:开发周期超过一天的功能,必须新建 feature 分支;一两小时内能搞定的小改动,可以直接在 develop 上改。这样一来,避免了分支太多的管理难题,又确保大功能有独立空间,不至于打架。

feature 分支

这一点太多人踩坑了。之前有个实习生在项目里建了个分支叫 testA_新版修复,你根本猜不到这是哪个模块的哪个功能。你问他怎么起名的?“我觉得这样我能记住啊……”

规范点的做法是,feature 分支一定要用 feature/功能模块名 来命名,比如:feature/login_page 或 feature/user_center,一看就明白是啥业务、由谁维护。

我们还额外加了项目缩写,比如  feature/bms-order-api(后台订单接口),这样一眼看上去就很清晰。

而且,feature 分支完工后必须合并回 develop,再删掉!不然到最后几十个没用的分支堆在仓库里,连 git branch 都要加载半天。

test 分支

我们都知道测试环境和开发环境是两码事,开发环境是“随便搞搞”,测试环境得是“稳定的可用版本”。

所以我们组会把 develop 分支上的代码,在联调完成后合并进 test 分支,给测试团队打包环境,方便他们验证。这个 test 分支其实就是 FAT 环境,对应的是 Feature Acceptance Test。

你要记住一件事:测试不等于开发完成,而是开发阶段的“第一次验收”。test 分支上要是出问题,别怪测试小姐姐骂你——她们经常背着锅上线了你没测全的 bug,最后锅还甩回开发。

release 分支

到了 release 分支,说明你要 UAT(用户验收测试)了,也就是正式上线前的“预演”。这时候的代码理论上不会再有大变动,只做些小修小补。

我们组的流程是:test 合并到 release,UAT 通过后,再由 release 合并到 master 和 develop,确保所有分支的代码都同步。别小看这一步,如果你只合进 master 不合 develop,下次又从 develop 拉新功能分支出来,bug 又被带回来了。

还有,release 分支上不建议直接开发,如果真的出现临时需求,还是在 hotfix 或 feature 分支上动手,搞完再合进来,别给上线流程添堵。

hotfix

热修分支,顾名思义,就是“线上的锅你得第一时间修”。它是从 master 上拉出来的,修完后要合回 master 和 develop,一边保证线上不炸锅,一边也把修复带进后续开发。

你可别把 hotfix 当成 feature 分支乱用了,那就失去了热修的意义。

而且命名必须规范,比如:hotfix/crash_homepage_bug,光看分支名就能猜到是首页崩溃修复,领导看到都说你“清楚”。

Git commit message

我们组之前的 commit message 是这样的:

  • “修改了一点代码”
  • “修复bug”
  • “又改了一下”

你说这要是三个月后让别人看,他能理解你当初改了什么?我看都想直接 git revert。

现在我们统一用 Angular 的提交规范,最基本的格式就是:

<type>(): 

比如:

feat(login): 添加登录页面自动验证逻辑
fix(user): 修复用户信息接口数据错乱问题

这样写的好处太多了:

  1. 一眼知道是新增功能还是 bug 修复;
  2. 可以用工具自动生成 changelog;
  3. 多人协作合代码,不容易冲突也不容易误会。

建议 commit 尽量粒度清晰,做到一次只改一类问题,不要多个功能混在一起提交,review 的时候你自己都说不清改了啥。

说说 .gitignore 那些“该进垃圾桶的文件”

每个 Java 项目都应该好好写一份 .gitignore,不然 target/.idea/*.log 这些奇怪的文件就通通混进代码仓库了。

我见过一次最离谱的提交,一个小哥把整个 build 目录 commit 上去了,直接导致项目从 200KB 变成 40MB,而且 CI 也跑不动。领导直接让他下次开会发言。

所以该忽略的就要忽略,不清楚的就去 GitHub 找类似项目的 .gitignore 模板抄一个,反正别瞎提。

规范不是枷锁

很多人一提规范就烦,总觉得是“上头管太多”。但其实真要哪天出事,比如:

  • 半年前上线的一个功能突然报错,你翻 commit 看不懂;
  • 新人看分支看得头晕,merge 错了删了别人的代码;
  • 同一段 bug 修复了三次,因为没同步到 develop 分支;

你就会明白,规范不是为了限制你,是为了在关键时刻救你一命。

我们团队用了这些规范之后,整个开发流程都顺多了,版本发布也更可控了。你可以不高级,但不能不专业。Git 不就是一把菜刀么?怎么用,全看你怎么磨。

最后,我为大家打造了一份deepseek的入门到精通教程,完全免费:https://www.songshuhezi.com/deepseek


同时,也可以看我写的这篇文章《DeepSeek满血复活,直接起飞!》来进行本地搭建。

对编程、职场感兴趣的同学,可以链接我,微信:yagebug  拉你进入“程序员交流群”。
🔥鸭哥私藏精品 热门推荐🔥

鸭哥作为一名老码农,整理了全网最全 《Java高级架构师资料合集》
资料包含了《IDEA视频教程》《最全Java面试题库》、最全项目实战源码及视频》及《毕业设计系统源码》总量高达 650GB 。全部免费领取!全面满足各个阶段程序员的学习需求。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/181831