git工程化实践:commit规范、emoji、多账号与分支规范
前言
单人项目里 git 怎么提交都行,团队协作时就需要约定:commit 怎么写、分支怎么建、一台机器上公司账号和个人账号怎么共存。这篇把这几件事一次说清。
一、commit message 规范
commit 一共由五部分组成:
(1)type:提交类型
feat: 新功能fix: 修复问题docs: 修改文档style: 修改代码格式,不影响代码逻辑refactor: 重构代码,理论上不影响现有功能perf: 提升性能test: 增加修改测试用例chore: 修改工具相关(包括但不限于文档、代码生成等)deps: 升级依赖
(2)scope:修改文件的范围(包括但不限于 doc、middleware、core、config、plugin)。
(3)subject:用一句话清楚的描述这次提交做了什么。
(4)body:补充 subject,适当增加原因、目的等相关因素,也可不写。
(5)footer:
- 当有非兼容修改(Breaking Change)时必须在这里描述清楚
- 关联相关 issue,如
Closes #1, Closes #2, #3 - 如果功能点有新增或修改的,还需要关联文档 doc
二、emoji 规范
以下 emoji 在 git 提交时已经完全支持,直接在 commit message 里使用即可:
| emoji | emoji代码 | commit说明 |
|---|---|---|
| 🎨 (调色板) | :art: |
改进代码结构/代码格式 |
| ⚡️ (闪电) | :zap: |
提升性能 |
| 🐎 (赛马) | :racehorse: |
提升性能 |
| 🔥 (火焰) | :fire: |
移除代码或文件 |
| 🐛 (bug) | :bug: |
修复 bug |
| 🚑 (急救车) | :ambulance: |
重要补丁 |
| ✨ (火花) | :sparkles: |
引入新功能 |
| 📝 (铅笔) | :pencil: |
撰写文档 |
| 🚀 (火箭) | :rocket: |
部署功能 |
| 💄 (口红) | :lipstick: |
更新 UI 和样式文件 |
| 🎉 (庆祝) | :tada: |
初次提交 |
| ✅ (白色复选框) | :white_check_mark: |
增加测试 |
| 🔒 (锁) | :lock: |
修复安全问题 |
| 🍎 (苹果) | :apple: |
修复 macOS 下的问题 |
| 🐧 (企鹅) | :penguin: |
修复 Linux 下的问题 |
| 🏁 (旗帜) | :checked_flag: |
修复 Windows 下的问题 |
| 🔖 (书签) | :bookmark: |
发行/版本标签 |
| 🚨 (警车灯) | :rotating_light: |
移除 linter 警告 |
| 🚧 (施工) | :construction: |
工作进行中 |
| 💚 (绿心) | :green_heart: |
修复 CI 构建问题 |
| ⬇️ (下降箭头) | :arrow_down: |
降级依赖 |
| ⬆️ (上升箭头) | :arrow_up: |
升级依赖 |
| 👷 (工人) | :construction_worker: |
添加 CI 构建系统 |
| 📈 (上升趋势图) | :chart_with_upwards_trend: |
添加分析或跟踪代码 |
| 🔨 (锤子) | :hammer: |
重大重构 |
| ➖ (减号) | :heavy_minus_sign: |
减少一个依赖 |
| ➕ (加号) | :heavy_plus_sign: |
增加一个依赖 |
| 🐳 (鲸鱼) | :whale: |
Docker 相关工作 |
| 🔧 (扳手) | :wrench: |
修改配置文件 |
| 🌐 (地球) | :globe_with_meridians: |
国际化与本地化 |
| ✏️ (铅笔) | :pencil2: |
修复 typo |
组合示例:
|
|
三、同机多账号管理
工作和个人项目共存一台机器时,为每个平台生成独立的 ssh key:
1. 生成 ssh key
|
|
~/.ssh/ 目录可以看到生成的密钥文件:私钥 xxx_id_rsa(不公开)、公钥 xxx_id_rsa.pub(添加到对应平台)。
2. 配置 ~/.ssh/config
# ------------------------ GitHub 配置 ------------------------
Host github.com
HostName github.com # 实际主机名(不变)
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa # 指向GitHub私钥
# ------------------------ GitCode 配置 ------------------------
Host gitcode.com
HostName gitcode.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitcode_id_rsa # 指向GitCode私钥
再配合每个仓库单独设置提交身份,即可完全隔离:
|
|
四、分支规范
| 分支名 | 说明 | 备注 |
|---|---|---|
| master | 主库 | 生产环境 |
| develop / dev | 开发 | 开发、测试环境 |
在此基础上可以按团队需要扩展:功能分支 feature/xxx、修复分支 hotfix/xxx、发布分支 release/x.y,命名保持 类型/简述 的统一风格即可。
总结
规范的价值在于可追溯:type + emoji 让 git log 一眼可读,scope 让改动范围可定位,分支规范让环境对应关系清晰。工具层面可以再配合 commitlint + husky 做强制校验,把约定变成流程。
- 原文作者:Anttu
- 原文链接:https://anTtutu.github.io/post/2023-02-07-git-workflow/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。