每个程序员都经历过那种绝望时刻:代码改崩了,想回退却找不到之前的版本;或者多人协作时,代码冲突到怀疑人生。其实,只要掌握正确的Git工作流,这些问题都能迎刃而解。
一、分支策略:不是所有代码都该直接推到主分支
很多初学者习惯直接在main/master分支上开发,这就像走钢丝没有安全网。推荐使用Git Flow或GitHub Flow策略:
- main分支:永远是可部署的生产代码
- develop分支:开发主线,整合各功能分支
- feature分支:每个新功能一个分支,命名如feature/user-login
- hotfix分支:紧急修复线上bug
这样即使某个功能开发出问题,也不会影响主分支的稳定性。
二、Commit规范:让历史记录会说话
看到过这种commit信息吗?”fix bug”、”update”、”修改了一下”——这种信息等于没说。推荐使用约定式提交:
feat: 添加用户登录功能
fix: 修复支付金额计算错误
docs: 更新API文档
refactor: 重构订单模块代码结构
test: 添加用户模块单元测试
这样看git log就能快速了解每次提交做了什么,回滚时也能精准定位。
三、Rebase vs Merge:选对工具很重要
这是Git中最容易引发”圣战”的话题之一。简单来说:
- Merge:保留完整历史,适合团队协作,但历史会比较乱
- Rebase:线性历史,更干净,但会改写历史
我的建议:本地feature分支用rebase保持整洁,推送到远程后用merge保留协作记录。永远不要对已推送的公共分支执行rebase!
四、必备的Git技巧
1. 暂存当前工作
git stash # 暂存
git stash pop # 恢复
当你需要临时切换分支处理紧急事务时,这个命令简直是救命稻草。
2. 选择性提交
git add -p # 交互式选择要提交的内容
一次修改涉及多个功能时,可以拆分成多个commit。
3. 回退的艺术
git reset --soft HEAD~1 # 撤销commit,保留修改
git reset --hard HEAD~1 # 撤销commit,丢弃修改(危险操作!)
git revert HEAD # 安全回退,创建新commit
五、Code Review的最佳实践
Git不只是代码管理工具,更是团队沟通的桥梁。通过Pull Request进行代码审查时:
- 每个PR控制在400行以内,太大难以审查
- 写清楚PR描述:改了什么、为什么改、如何测试
- 审查别人代码时,关注逻辑而非风格(风格交给linter)
结语
Git工作流没有绝对的对错,关键是团队达成共识并严格执行。好的工作流就像好的代码风格——可能一开始觉得繁琐,但习惯后会发现效率提升明显。毕竟,磨刀不误砍柴工。
你的团队使用什么样的Git工作流?欢迎分享交流。
觉得有用就点个赞吧~