Git
Git 是分布式版本控制系统,是现代软件工程的基础设施。Git 记录代码的所有变更历史,支持多人协作开发,提供分支管理、代码审查、版本回退等功能。
约定式提交
约定式提交(Conventional Commits)规范提交信息格式,使提交历史清晰易读。
提交类型
feat:新功能、新特性
fix:修改 bug
perf:更改代码,以提高性能(在不影响代码内部行为的前提下,对程序性能进行优化)
refactor:代码重构(重构,在不影响代码内部行为、功能下的代码修改)
docs:文档修改
style:代码格式修改,注意不是 css 修改(例如分号修改)
test:测试用例新增、修改
build:影响项目构建或依赖项修改
revert:恢复上一次提交
ci:持续集成相关文件修改
chore:其他修改(不在上述类型中的修改)
release:发布新版本
workflow:工作流相关文件修改
提交格式
<type>(<scope>): <subject>
<body>
<footer>type 是提交类型,scope 是影响范围(可选),subject 是简短描述(不超过 50 字符)。
示例:
feat(auth): add JWT authentication
Implement JWT-based authentication with access token and refresh token.
- Add login endpoint
- Add token refresh endpoint
- Add middleware for token validation
Closes #123Git 分支管理
Git Flow
Git Flow 是经典的分支管理策略,适合有明确发布周期的项目。
main:主分支,只包含稳定发布版本
develop:开发分支,集成所有功能开发
feature:功能分支,从 develop 分支,完成后合并回 develop
release:发布分支,从 develop 分支,准备发布时使用
hotfix:修复分支,从 main 分支,紧急修复使用
GitHub Flow
GitHub Flow 是简化的分支管理策略,适合持续部署项目。
main:主分支,始终可部署
feature:功能分支,从 main 分支,通过 PR 合并到 main
Trunk Based Development
基于主干的开发,所有开发在主分支进行,频繁发布。
Git Hook
Git Hook 是 Git 在特定事件触发的脚本,可用于代码检查、自动测试、格式化等。
常用 Hook
pre-commit:提交前触发,可用于代码格式检查、运行测试
commit-msg:提交信息编辑后触发,可用于验证提交格式
pre-push:推送前触发,可用于运行完整测试套件
Husky
Husky 是 Git Hook 管理工具,简化 Hook 配置。
{
"husky": {
"hooks": {
"pre-commit": "npm run lint",
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
}
}Git 最佳实践
频繁提交:小步快跑,每次提交包含一个完整的逻辑单元
清晰提交:提交信息准确描述变更内容,便于历史追溯
原子提交:每次提交只做一件事,不包含无关变更
审查合并:代码审查通过后再合并到主分支
保持干净:定期清理已合并的分支,保持分支列表简洁
Git 是工程化的基础,理解 Git 的工作原理和最佳实践,有助于高效协作开发。