git工作流详解

Git工作流(alpha)

目前Git工作流和Git Flow一致,只是名称的不同.

分支概览

  • master 线上分支,只允许从prepub和hotfix分支并合
  • prepub-* 预发分支(等同于git flow的release分支),从dev checkout而来,允许小的bug修复
  • hotfix-* 从master checkout而来,修复线上问题
  • dev 开发分支,只能从dev-feature_name分支合并
  • dev-feature_name 特性分支,可以是需求对应的分支,也可以是开发的优化. 从dev checkout而来.

流程

1.开发新功能

从dev分支checkout新的feature分支

命令:

$ git checkout dev

Switched to branch 'dev'

$ git checkout -b dev/my_feature

Switched to a new branch "dev/my_feature"

2.新功能完成

将feature分支合并到dev

命令:

$ git checkout dev

Switched to branch 'dev'

$ git merge --no-ff dev/my_feature

Updating ea1b82a..05e9557 (Summary of changes)

$ git branch -d dev/my_feature

Deleted branch my_feature (was 05e9557)

$ git push origin dev

关于 --no-ff 参数,是为了防止git自动的fast-forward而丢失merge这一动作的信息,方便之后撤销某个feature.

git工作流详解_第1张图片git工作流详解_第2张图片

左边使用了--no-ff参数,右边是fast-forward的结果

3.准备发布新功能

从dev创建prepub分支,确定发布的版本号(例如1.2.0).在prepub分支上进行发布前的准备,包括最后的升级全面测试,bug修复等工作.

命令:

$ git checkout dev

Switched to branch 'dev'

$ git checkout -b prepub-1.2.0

Switched to a new branch "prepub-1.2.0"

4.发布

当prepub分支完全达到发布状态,需要发布时.将prepub分支合并到master,打上tag版本号.然后将prepub分支 merge回dev分支,以便下一个新版本的迭代.

命令:

# 将prepub分支合并到master

$ git checkout master

Switched to branch 'master'

$ git merge --no-ff prepub-1.2.0

Merge made by recursive. (Summary of changes)

$ git tag -a 1.2.0

# 将prepub分支合并到dev

$ git checkout dev

$ git merge --no-ff prepub-1.2.0

# 删除prepub分支

$ git branch -d release-1.2

Deleted branch release-1.2 (was ff452fe).

5.修复线上bug

命令:

# 创建hotfix分支

$ git checkout master

Switched to branch 'master'

$ git checkout -b hotfix-1.2.1

Switched to a new branch "hotfix-1.2.1"

6.修复完成

命令:

# 将hotfix分支合并到master

$ git checkout master

Switched to branch 'master'

$ git merge --no-ff hotfix-1.2.1

Merge made by recursive. (Summary of changes)

$ git tag -a 1.2.1

# 将hotfix分支合并到dev

$ git checkout develop

Switched to branch 'develop'

$ git merge --no-ff hotfix-1.2.1

Merge made by recursive. (Summary of changes)

# 删除hotfix分支

$ git branch -d hotfix-1.2.1

Deleted branch hotfix-1.2.1 (was abbe5d6).

Git Flow工具

git-flow-avh是一个GitFlow工具,将各个阶段的命令绑定到了一起.

安装

brew install git-flow-avh

初始化项目

git工作流详解_第3张图片流程(使用gitflow工具)

1.开发新功能 git flow feature start

2.新功能完成 git flow feature finish

3.准备发布新功能 git flow release start

4.发布 git flow release finish 5.如果当前分支就是需要发布的分支则无需指定version

6.修复线上bug git flow hotfix start

7.修复完成 git flow hotfix finish 如果当前分支就是需要发布的修复分支则无需指定version

可以用alias简化命名

alias gfi='git flow init'

alias gff='git flow feature'

alias gfr='git flow release'

alias gfh='git flow hotfix'

详细文档看GitHub wiki

Git规范

1.请尽量保证每个commit都是相对完整,有意义的提交,并附上简明扼要(中文)的提交信息.

2.每个commit应包含单一的目的,不要将重构,需求开发,优化等多个动作都放在一个commit,这样不利于reivew.

3.不要在公共分支上使用任何会改变Git提交历史的命令,例如 git reset,git rebase,git amend.

4.pull远程分支前使用--rebase参数,减少不必要的merge动作,保证提交历史的线性(此操作不会有副作用).

5.(可选)在将本地feature分支push到公共feature分支之前,用rebase清理自己的提交,保证commit符合规范,并保证feature分支提交历史的线性.

6.(可选)发起Merge request之前使用rebase清理自己的提交.

 

你可能感兴趣的:(git)