1. Git 流工作流(Git Flow)

Git Flow 是一种经典的分支管理模型,特别适用于需要频繁发布和多阶段测试的企业。

主要分支:

  • main 分支:始终保持稳定版本,用于生产环境的发布。
  • develop 分支:集成开发分支,汇集所有开发的最新功能,但未经完整测试。
  • feature 分支:每个新功能或任务一个分支,开发完成后合并到 develop
  • release 分支:从 develop 分支创建,用于测试和修复,完成后合并到 maindevelop
  • hotfix 分支:从 main 分支创建,用于紧急修复生产问题,修复完成后合并回 maindevelop

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