- 约1256字
- 技术
- 2026年3月26日
每次版本发布前,办公室总能听到这样的对话:“你那个分支又改了我要的文件?““算了直接force push吧。"——听起来是不是很熟悉?我在上一家公司就是这样过来的,每天至少花半小时处理合并冲突,Git从工具变成了负担。直到后来重构了工作流,情况才彻底改变。
1. 分支命名要有套路的
很多人命名分支随心所欲:叫什么"test”、“try”、“wip"的都有。结果就是gitlab上密密麻麻几十个分支,根本分不清哪个对应哪个需求。
推荐格式:{类型}/{issue-id}/{简短描述}
feature/123/user-login
bugfix/456/payment-timeout
hotfix/789/memory-leak
这样一眼就能看出这个分支是做什么的、对应哪个任务、是否紧急。我强烈建议把issue编号带上,方便日后追溯。
2. 提交信息要过脑子
git commit -m "fix" 这种提交信息,等于没提交。半年后回溯代码,你根本不知道自己当时改了什么。
推荐格式:类型: 简短描述(不超过50字)
feat: 添加用户登录接口
fix: 修复支付超时问题
refactor: 重构订单查询逻辑
chore: 更新依赖版本
如果你用Angular团队的约定会更好:feat、fix、docs、style、refactor、test、chore,一目了然。
3. 合并前先rebase,别直接merge
很多团队习惯直接在master上merge分支,导致提交历史像一团乱麻。试试rebase:
# 在功能分支上,把master的最新代码"接"到自己下面
git fetch origin
git rebase origin/master
# 如果有冲突,解决后继续
git add .
git rebase --continue
这样做的好处是提交历史是一条直线,排查问题特别方便。当然,如果你在团队分支上开发,rebase前务必沟通好。
4. 用好交互式rebase整理提交
一个功能做了10个提交,其中8个是"wip”、“fix”、“fix again”?用交互式rebase合并它们:
git rebase -i HEAD~5
然后把不需要的commit改成squash或fixup。最终呈现给团队的,是一个干净的功能提交,而不是垃圾堆。
5. 冲突了别急着改代码,先沟通
遇到冲突时,大部分人的反应是自己动手改。但有时候对方改的部分你根本看不懂,或者改了之后反而引入新问题。
更好的做法:
- 先在聊天工具上问对方:“我这边有冲突,你改这部分是想解决什么问题?”
- 理解意图后再动手,避免"解决了冲突但改错了需求”
取舍建议
以上5点看着简单,但真正落地需要团队共识。我的建议是:
- 小团队(3-5人):先从分支命名和提交规范做起,这两个成本最低,见效最快
- 中大型团队(5人以上):加上code review流程,合并前必须有人过一眼,既是检查也是知识共享
- 不管团队大小:定期回顾Git使用情况,每个月抽半小时聊聊"最近有什么Git上的困扰”
好的工作流不是约束,而是让协作更顺畅。Git本身是工具,别让它成为效率的瓶颈。
你们团队在Git使用上踩过什么坑?评论区聊聊,下次我来针对性出解决方案。