先放一个gitflow的流程图:
- Master分支,这个分支最近发布到生产环境的代码,最近发布的Release(新功能), 这个分支只能从其他分支合并,不能在这个分支直接修改,该分支代表着线上最新代码。
- Develop 分支,这个分支是我们的主开发分支,包含所有要发布到下一个Release的代码,这个主要合并与其他分支,比如Feature分支,所有要发布的功能完成后将该分支合并到Master分支上线
- Feature 分支,这个分支主要是用来开发新的功能,开发完成合并回Develop分支
- Release分支,测试分支,当你需要尽心新功能测试的时候,合并完Feature 分支到Develop 分支后,我们基于Develop分支创建一个Release分支,完成Release后,我们合并到Develop分支
- Hotfix分支,在Master发现新的Bug时候(也就意味着线上代码出现紧急bug,不能等到下个版本修复和新的Feature 分支一起开发修复),我们需要创建一个Hotfix, 完成Hotfix后,我们合并回Master紧急发布修复版本,同事合并到Develop分支保持后续Release分支开发的完整性
其实有经验的大概看这些就能理解大概的工作流了,至于具体的比如Feature 分支之间的合作,Feature 分支和Develop 分支合并的合作,Release分支和Develop 分支合并的合作具体细节大家可以再去了解一下其他文章。
然后是这些流程中常用的git操作:
- 创建develop分支
git branch develop //创建本地分支
git push -u origin develop //推送本地分支到远程,创建远程新分支
- 开始新Feature开发
git checkout -b new-feature develop //new-feature为新分支名字
- 完成Feature
git pull origin develop //拉取远程develop更新
git checkout develop //本地切换到develop
git merge --no-ff new-feature //本地合并new-feature到develop
git push origin develop
git branch -d some-feature //本地删除new-feature
- 开始Relase
git checkout -b release-0.1.0 develop
- 完成Release
git checkout master //合并到master,更新远程,用于上线
git merge --no-ff release-0.1.0
git push
git checkout develop //合并到develop ,更新远程,用于后续开发完整性
git merge --no-ff release-0.1.0
git push
git branch -d release-0.1.0
git tag -a v0.1.0 master //打上标签
git push --tags
- 开始Hotfix
git checkout -b hotfix-0.1.1 master
- 完成Hotfix
git checkout master //合并到master,更新远程,用于上线紧急修复
git merge --no-ff hotfix-0.1.1
git push
git checkout develop //合并到develop ,更新远程,用于后续开发完整性
git merge --no-ff hotfix-0.1.1
git push
git branch -d hotfix-0.1.1
git tag -a v0.1.1 master //打上标签
git push --tags