简单整理一下多人同一远程仓库git工作流模式。
1. 初始化本地仓库
1 2 3 4 5 6
| // 已有项目 git clone git@github.com:mrzzcn/mrzzcn.github.io.git
// 新建项目 git init
|
2. 分支
三个基本分支:
master: 稳定分支,用于发布和修改产品bug;
test: 测试分支,用于发布测试服务器共内部测试;
dev: 开发分支,用于开发时测试和发布,随时合并新功能代码或bug修复;
3. 开发流程
1 每个新功能基于dev
分支,创建新分支开始,例如现在要增加一个登录功能:
1 2 3 4 5 6 7
| // 当前位于dev分支 git checkout -b feature-login
// more coding
git add -A git commit -m 'feature-login completed'
|
2 新功能完成,自己测试之后,需要合并到dev分支:
1 2 3 4 5 6 7 8 9 10 11
| // 当前位于dev分支 git pull // 首先拉取远程分支
// dev分支(冲突解决完成)clean之后 git checkout feature-login git rebase dev // 保留dev的其他人的提交记录并合并dev分支到当前新功能分支
// dev 分支合并之后(可能有冲突需要解决) git checkout dev git rebase feature-login
|
这时的分支状态:
3 接下来,可以删除feature-login分支:
1 2
| // 当前位于dev分支 git branch -d feature-login
|
4 这时,feature-login 基本开发完成,可以合并到test分支,发布给QA测试
1 2
| // 当前位于 test 分支 git rebase dev
|
5 如果QA测出bug需要修改,或者临时有需求变动,需要重复上述步骤,不过命名可以修改,例如 fix-login-bug-1024。如果是细节调整或者是晓得修改则可以在dev分支直接执行。
6 所有功能测试无误之后,可以合并到 master
分支,发布生产环境
1 2 3 4 5 6
| // 当前位于 master 分支 git rebase dev
// 也可能根据不同功能的测试状态,会执行不同的合并操作 git merge ...
|
4. 线上bug临时修改
如果生产环境突然出现bug需要修改,或者要改一些细节部分,则需要直接在 master
上执行,然后合并到 dev
。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| // 当前位于 master 分支 git checkout -b hotfix-bug1117
// more coding
git add -A git commit -m 'fixed hotfix-bug1117'
git checkout master git rebase hotfix-bug1117
// 然后发布
// 最后,需要把修改合并到dev分支,假如刚才的提交commit是abcdefg git checkout dev git cherry-pick abcdefg // 可能需要解决冲突
// 最后 删除 `hotfix-bug1117` 分支 git branch -d hotfix-bug1117
|