git工作流

Git Flow

主要参考:团队开发中 Git 最佳实践git工作流_第1张图片
git工作流_第2张图片

Git Flow模型中定义了主分支和辅助分支两类分支。其中主分支用于组织与软件开发、部署相关的活动;辅助分支组织为了解决特定的问题而进行的各种开发活动。
masterdev为主要分支。其他为辅助分支,与主分支不同,这些分支完成相应的任务,将被移除。

  1. master:可发布到生产环境的分支,只能merge其他分支,不允许push到此分支。
  2. hotfix:修复线上bug的分支,从master分支中拉取,修改完毕后合并到master和develop分支。(注意,hotfix分支的定位应该是具有修复时间短的、紧急的、影响范围小的特点,否则应视为一个特性分支进行开发)
  3. release分支:发布版本分支,特性分支首先合并develop,然后合并至release,在release进行修改测试。需要发版后由专人合并master并且发布
  4. dev(develop):此分支为开发分支。包括了master的代码和最新开发完成的特性的代码。一般用于集成测试和特性分支开发(注意:不要轻易的把master分支合并到develop分支。也不要把未完成的特性分支合在develop)
  5. feature分支:针对每个功能开一个feature分支进行开发,特性分支由develop拉出,并且每一个特性当独占用分支。(注意:前端、后端在开发同一个特性时,最好在同一个分枝,避免重复合并分支导致分支数错乱)

开发新特性 feature
当开始一个新特征的开发时,从develop中checkout出来一个新的特性分支,此特性开发完成后合并回develop分支,然后删除此分支。

# 1.开发xxx功能,命名为feature-*或feature/*。
git checkout -b feature/xxx dev
# 2.当新功能完成时,合并回develop分支,并删掉此功能分支。
git checkout dev
git merge --no-ff feature/xxx
git push
git branch -d feature/xxx

发布 release
release分支是为发布新的产品版本而设计的。在这个分支上的代码允许做小的缺陷修正、准备发布版本所需的各项说明信息(版本号、编译时间等等)。合并会develop和master分支

# 1. 当项目开发到需要发布一个产品版本,从develop分支拉出一个发布分支,命名为release-*或release/*。
git checkout -b release-0.1 dev
# 2. 该分支用于发布循环,只做bug修复、文档生成等面向发布的任务。不添加新功能到这个分支上。
# 3. 把发布分支merge到master分支上。
git checkout master
git merge --no-ff release-0.1
git push
# 4. 打tag记录版本号,方便跟踪历史版本
git tag -a 0.1 -m "release 0.1 publish" master
git push --tags
# 5. release分支所做的修改需要重新合并到develop分支,以便将来的版本也包含这些错误修复。
git checkout dev
git merge --no-ff release-0.1
git push 
# 6. 最后删除发布分支
git branch -d release-0.1

热修复 hotfix
当线上版本出现bug时,需要立即修复的时候,就需要从master分支上指定的tag版本派生hotfix分支来进行紧急修复、打补丁。从master检出,需要合并到develop和master分支。

1.从master分支拉一个维护分支,命名为hotfix-* 或 bug代号
git checkout -b hotfix-1.2.1 master
# todo...
git commit -m "Fixed severe production problem"
# 2.修复完成后,马上合并回master和develop分支,以便下个版本也包含这次修复。
git checkout master
git merge --no-ff hotfix-1.2.1
git push
git checkout dev
git merge --no-ff hotfix-1.2.1
git push 
git branch -d hotfix-1.2.1
# 3.master用新版本号打tag。
git tag -a 1.2.1 -m "release 0.2 publish" master
git push --tags
# 注意:有一个例外,如果此时存在release分支时,就需要将hotfix分支合并到release分支,而不是develop分支。其实当release分支完成的时候,这次修复也就被合并到develop分支了。(如果在develop分支的工作立即需要修正这个错误,而不能等到release分支完成,也可以将后hotfix分支合并到develop分支。)

# 4. 最后,删除这个hotfix分支:
git branch -d hotfix-1.2.1

注意:在主分支上, 只允许merge操作,从而保证主分支的commit历史的完整性。在多人开发的主分支上进行rebase操作是一件很危险的行为,可能会导致其他成员的history与主分支不一致。

你可能感兴趣的:(git,git工作流,git,flow)