50 Git Workflow - xiaoxin01/Blog GitHub Wiki

50-Git Workflow

常用 git workflow

根据使用场景,常用的 git workflow 分为如下3种:

  1. 仅有一个 master 分支
  2. 有 master 和 develop 分支
  3. 有 master、pre-production、production 分支
master develop + master master + pre-production + production
复杂度 简单 中等 复杂
特点 master的代码就是线上环境代码 线上环境代码从development分支代码中获取 增加 pre-production 以确保即将上到 production 的代码没有问题
应用场景 小型Web等需要迅速修改部署 代码不立即上线的场景 大型的对于健壮性要求较高的场景

代码 merge 方式

无论采取何种 git workflow ,对于代码的merge,建议都遵循如下方式:

  1. 开新branch(feature或bugfix)
  2. 发 pull request
  3. code review
  4. merge code

merge or rebase

merge 操作不影响分支的 commit 历史, rebase 操作会改变分支的 commit 历史,表示重新以别的分支建立基准,会把别的分支的commit塞到本分支commit前面

拿只有一个 master 分支的场景来说明这两个命令。

假设:

  • master 分支的 commits 为 ABE
  • feature-1 分支的 commits 为 ABCD

在 feature-1 分支上执行的结果如下:

  • git merge master:ABCDF
  • git rebase master:ABECD

git merge 默认是 --ff 的方式,如果没有冲突,则自动合并代码,并在分支上建立一个新的 commit(F),包含E的更改内容 git rebase 重新以 master 为基准,master 比 feature-1 多了一个 commit:E,所以操作会把 E 塞到 本分支前面,变成ABECD。

推荐操作

对于 master 主分支,仅仅进行 merge 操作,避免 rebase 造成历史 commits 变化,进而影响到更多的人向 master 分支 merge 代码出错 对于 feature 分支,在 merge 到 master 分支之前,先进行 rebase master 的操作,让 commits 重新以 master 分支为准,方便代码 merge 到 master 分支