1. Git 流工作流(Git Flow)
Git Flow 是一种经典的分支管理模型,特别适用于需要频繁发布和多阶段测试的企业。
主要分支:
main
分支:始终保持稳定版本,用于生产环境的发布。develop
分支:集成开发分支,汇集所有开发的最新功能,但未经完整测试。feature
分支:每个新功能或任务一个分支,开发完成后合并到develop
。release
分支:从develop
分支创建,用于测试和修复,完成后合并到main
和develop
。hotfix
分支:从main
分支创建,用于紧急修复生产问题,修复完成后合并回main
和develop
。
2. GitHub Flow
适用于持续部署或快速迭代的团队,分支管理简单,常见于初创企业或小团队。
主要分支:
main
分支:唯一的长期分支,所有代码合并后直接部署到生产环境。- 功能分支:每个功能或问题一个分支,完成后直接合并到
main
。
3. GitLab Flow
GitLab Flow 是 GitHub Flow 的改进版,适用于多种环境(开发、测试、预生产、生产)场景。
主要分支:
main
分支:生产环境的稳定代码。- 环境分支(
staging
,production
等):代表特定环境的代码状态。 - 功能分支:用于开发新功能。
4. Trunk-Based Development
适合快速迭代的团队,通常与 CI/CD 工具结合使用,分支管理非常精简。
主要分支:
main
分支:所有开发都在此分支完成。- 短生命周期分支:仅在开发时创建,开发完成后立即合并并删除。
作为独立开发者,我一般只用两个分支.....
1.初始化本地仓库并创建远程仓库
#初始化本地仓库
git init
#创建一个 README 文件作为起始内容
echo "# My Project" > README.md
#添加并提交到 master 分支
git add README.md
git commit -m "Initial commit on master"
#添加远程仓库
git remote add origin <远程仓库地址> # 替换 <远程仓库地址> 为你的实际远程仓库地址
#推送 master 分支到远程仓库
git push -u origin master
2.创建 main 分支作为发布分支
#从 master 分支创建 main 分支
git checkout -b main
#推送 main 分支到远程仓库
git push -u origin main
3.在 master 分支上开发和测试
每次开发时:
#切换到 master 分支
git checkout master
#开始你的开发,编辑代码
#比如修改一些代码文件
echo "New feature development" >> feature.txt
#将更改添加到暂存区
git add feature.txt
#提交更改
git commit -m "Add new feature"
#推送到远程 master 分支
git push origin master
4.合并 master 到 main 分支作为正式版本
当在 master
分支完成测试且确认稳定后,将更改合并到 main
分支:
#切换到 main 分支
git checkout main
#合并 master 分支的内容
git merge master
#提交合并后的更改(如果有冲突,解决冲突后再提交)
git commit -m "Merge master into main for release"
#推送到远程 main 分支
git push origin main
5.简化操作的建议
为了减少手动切换分支和重复性命令,可以考虑以下工具或技巧:
定义 Git 别名:
git config --global alias.dev "!git checkout master && git pull origin master"
git config --global alias.release "!git checkout main && git merge master && git push origin main"
使用分支保护: 在远程仓库中(如 GitHub 或 GitLab),可以对 main
分支启用分支保护,确保只有经过审核的代码才能推送到 main
。
6.额外的注意事项
频繁同步远程分支: 在开发过程中,记得经常 git pull origin master 来同步远程更新。
测试自动化: 可以引入 CI/CD 工具(如 GitHub Actions 或 Jenkins)在合并之前进行自动化测试。
标签管理: 在正式发布版本时,可以为 main 分支的代码打标签,例如:
git tag -a v1.0 -m "Release version 1.0"
git push origin v1.0