小团队适用的git-workflow

3,687 阅读2分钟

主流程

gitworkflow

涉及分支

  • master分支:主干分支,用于发布到生成环境,master分支上的commit源自于release分支和hotfix分支的合并,每个commit都应该有相应的tag。
  • develop分支:主开发分支,feature分支和release分支都是基于该分支进行,所有开发经过code review后都会应用到该分支。
  • feature分支:开发新功能使用的分支,它从develop分支切出,并最终将会合并到develop分支。feature分支的命名规范为:feature-YYYYMMDD-特性(以下划线分割),例:feature-20180701-xxx
  • release分支:发布分支,当完成某个里程碑的开发时,需要发布版本。这是从develop分支切出release分支,进行发布。针对发布后接收到的反馈,在该release分支进行bugfix,当该分支稳定时,分别合并到master和develop分支,之后删除该release分支。release分支的命名规范为:release-版本号,例:release-1.0.0
  • hotfix分支:针对线上版本进行bugfix,然后分别合并到master和develop分支,hotfix分支的命名规范为:hotfix-bug, 例:hotfix-table_height_fix

Git flow流程

开发新分支

建立新分支 - feature分支

git checkout develop // 切换到develop分支

git pull // 与远程分支同步develop

git checkout -b feature-20180701-xxx// 建立新分支,进行开发

将新分支推到远程

git checkout develop // 切换到develop分支

git pull // 与远程分支同步develop

git checkout feature-20180701-xxxx // 切换到你的开发分支

git rebase develop // 基于最新的develop分支进行代码合并,解决冲突

git push origin feature-20180701-xxx // 将你的分支推向远程

pull request

去gitlab发起一个针对develop分支的pull request

需了解:

  • git rebase vs git merge ?
  • 代码冲突如何解决 ?
  • 如何发起一个pull request?

发布

建立release分支

git checkout develop // 切换到develop分支

git pull // 与远程分支同步develop

git checkout -b release-1.0.0 // 建立release分支

git push origin release-1.0.0 // 推向远程

基于Release分支进行bugfix

git checkout release-1.0.0 // 切换到release分支

git pull // 与远程同步release

git checkout -b release-1.0.0_bugfix // 基于release分支建立bugfix分支,进行开发

git push origin release-1.0.0_bugfix // 推向远程

pull request

去gitlab发起一个针对release分支的pull request

将release分支分别合并到master和develop,对master分支进行打tag

git branch -D release-1.0.0 // 删除该release分支

线上bugfix

同上,hotfix是基于master的。

将hotfix分别合并到master和develop,对master分支进行打tag

其他常见git操作

  • 将n个commit合成一个commit,git rebase -i HEAD~n
  • 将某个分支的某个commit放到另外一个分支上,git cherry-pick commitID
  • 重命名commit,git commit --amend

工具

  • bash-git-promot - An informative and fancy bash prompt for Git users
  • source-tree - git client

Reference