git模型之git-flow

229 阅读3分钟

权威参考:
a-successful-git-branching-model

沉思:
按照大佬博客中的理解,gitflow分支开发模型,适合维护明确版本较多的的软件工程,最好版本的发布有明确的周期,以及相应的功能时间节点。但是对于CD(持续部署)来说,可能不是一个好的选择,因为CD持续部署可能没有传统软件工程一样,版本清晰明了。

示意图: image.png

git分支介绍

production(master)分支:
当需要固化版本的时候,如设置v1,v2,是最近发布到生产环境的分支,本分支代码只能从只能从其他分支(hotfix分支、release分支)合并,所有在master上的分支上的commit应该打tag

release分支(release-*):
当我们需要一个新版本的时候,我们基于develop分支创建一个release分支,完成release(测试、修改bug)之后合并到master分支和develop分支,同时在master分支上打个tag记住release版本号,然后可以删除release分支。(所以说在release分支上是可以提交代码的) image.png

develop分支
主干开发分支,包含发布到下一个release的代码

feature分支(feature-*)
这个分支主要用来开发新的功能,一旦开发完成,我们就将它合并到develop分支,合并完分支后一般会删掉这个feature分支,也可以保留。 image.png

hotfix分支(hotfix-*) 是一个临时分支,我们需要基于master分支创建一个新的hotfix分支,进行bug修复,完成hotfix后,合并回master分支和develop分支,同时在master上打一个版本。 image.png

通过对分支的描述,我们大概已经知道了git flow的工作流程。

gitflow代码示例

  • 创建develop分支
git branch develop
git push -u origin develop
  • 开始新feature开发
git checkout -b some-feature develop  # -b 依据develop创建一个新分支
# 推送到远程
git push -u origin some-feature
# 做一些改动
git status
git add some-file
git commit -m "提交的信息"
  • 完成feature
# 更新一下develop分支
git pull origin develop

# 先切换到develop分支
git checkout develop

#然后吧feature分支合并到develop分支
git merge --no-ff some-feature

#推送develop到远程
git push origin develop

#删除分支
git branch -d some-feature

# 删除掉远程的fature分支
git push origin --delete some-feature
  • 开始release
git checkout -b release-0.1.0 develop
git push -u origin release-0.1.0
  • 完成release
# 切换到master分支,把release分支合并到master分支
git checkout master
git merge --no-ff release-0.1.0

# 切换到develop分支,把release分支合并到develop分支(修改bug或者测试的一些改动)
git checkout develop
git merge --no-ff release-0.1.0
git push

#删除release分支
git branch -d release-0.1.0

#删除远程release分支
git push origin --delete release-0.1.0

#在master分支上打tag版本标签
git tag -a v0.1.0 master
git push --tags
  • 开始hotfix
git checkout -b hotfix-0.1.1 master
  • 完成hotfix
#合并hotfix到master分支
git checkout master
git merge --no-ff hotfix-0.1.1
git push

# 合并hotfix到develop分支
git checkout develop
git merge --no-ff hotfix-0.1.1
git push

#删除hotfix分支
git branch -d hotfix-0.1.1

git tag -a v0.1.1 master
git push --tags

Git日常操作

  1. 将本地分支与远程指定分支关联(手动建立关联),远程分支在前,本地分支在后
git branch --set-upstream-to origin/dev dev

Git使用手册
git官方文档