Git不是魔法,而是一个工具。但你需要学会使用它
如果你用JavaScript编写代码,那么你很可能遇到过这样的情况:在一次git merge之后,整个控制台亮起红灯,而Slack里消息不断:“谁搞坏了构建?”熟悉吗?欢迎来到一个世界,在这里Git工作流不仅仅是一组命令,而是支撑整个开发的基础。
在本文中,我们将讨论的不是抽象的理论,而是针对JavaScript开发团队的真实工作流程。你将了解如何组织分支、设置代码审查、不害怕rebase以及自动化日常任务。我们开始吧。
为什么标准的“git add — git commit — git push”在团队中行不通?
当只有一个人在一个项目上工作时,分支混乱是个人的事。但是一旦第二个、第三个、第十个开发者加入仓库,没有清晰的Git工作流,混乱就开始了。冲突、丢失的提交、像“fix”或“upd”这样含义不明的消息——所有这些都会扼杀生产力。
对于JavaScript项目(React、Node.js、Next.js),问题更加严重,因为依赖项、构建文件和配置文件经常变化。一次错误的合并——你就会花半天时间搞清楚为什么npm run build不工作了。
因此,让我们制定一个统一的标准。我们称之为“JS团队的纯净Git工作流”。
基础:分支模型
我们将使用经典的Git Flow,并针对现代JavaScript技术栈进行一些小的调整。你不需要10种分支。四种就足够了:
main— 生产分支。只有经过审查和测试的稳定代码才能进入这里。develop— 主要开发分支。所有功能都合并到这里。feature/*— 用于新功能的分支。命名要有意义:feature/add-auth-modal。fix/*— 用于错误修复。例如,fix/api-timeout-error。
这个集合对于90%的项目来说已经足够了。想要更硬核?添加release/*用于准备发布,以及hotfix/*用于生产环境的紧急修复。
示例:创建功能分支
假设你需要用React添加一个反馈表单。不要在develop分支上做。创建一个单独的分支:
git checkout developgit pull origin developgit checkout -b feature/contact-form现在你在隔离环境中工作。可以搞破坏、做实验、写糟糕的代码——这不会影响到任何人。
提交:写得让你不会感到羞愧
提交信息是你代码的文档。如果你写git commit -m "fix",你是在给同事和一个月后的自己增加麻烦。请遵循Conventional Commits。这是一个易于阅读且能被工具自动解析的标准。
格式:
<类型>(<范围>): <描述>
[可选的提交正文]JavaScript项目的类型:
feat— 新功能fix— 错误修复refactor— 重构docs— 文档chore— 日常事务(更新依赖、配置linter)
一个好的提交示例:
feat(contact-form): add form validation with Yup
- Added Yup schema for name, email, message fields- Display inline errors on blur- Disable submit button when form is invalid这样的提交立即说明:做了什么,在哪里做的,以及为什么做。非常适合代码审查。
代码审查:不要害怕批评,要害怕错误
代码审查不是考试,而是在错误进入生产环境之前捕获它的方法。在一个好的代码