GitFlow开发管理流程

GitFlow开发管理流程

大鱼 14,239 2019-03-05

最近公司代码仓库使用的gerrit, git flow 开发流程有点忘了,做下记录

1. 仓库建立,

一般采用gitlab搭建私库,有其他方案也可

2. 分支说明

分支说明
master主分支,最稳定的代码,禁止直接提交代码至该分支,
代码必须通过 release 分支 PR 合并
release预发布分支,通过是 release/v1.0.0 这种形式,
代表某个版本已锁定功能,通过 develop 分支创建的,
当有 bug 时需要直接在该分支上修改,完成后 PR 至 develop 分支
develop开发分支,禁止直接提交代码至该分支,通过 feature 分支 PR 合并
feature功能分支,通过代表某个功能,

例如一个 feature/login,功能分支完成后通过 PR 至 develop 分支
hotfix|当线上版本需要修复 bug 时,从 master 创建一个 hotfix 分支,例如 hotfix/login

前三个,是只读分支,代码只能通过 Merge Request 进行合并
分支的管理参考比较流利的 https://nvie.com/posts/a-successful-git-branching-model/,即GitFlow

3. Fork分支

为了保证主仓库的分支干净,同时避免误操作,我们采用的方式是 Fork
fork 意思大致就是复制一个仓库,可以在这个仓库任意地修改而不会影响
image.png
Fork 完成之后, clone下来,需要修改一下本地仓库的 remote,参考下面的配置仓库信息

cd projectPath # 进入项目目录
git remote set-url origin git@gitlab.xx:private/xxx.git # 修改 origin 的地址,fork出来的私有仓库的地址
git remote add upstream git@gitlab.xx:company/xxx.git # 新增一个 upstream,远程主项目仓库的地址

git remote -v # 查看 remote 如下

origin  git@gitlab.xx:private/android.git (fetch)
origin  git@gitlab.xx:private/android.git (push)
upstream  git@gitlab.xx:company/android.git (fetch)
upstream  git@gitlab.xx:company/android.git (push)

4. 日常开发

cd projectPath # 所有操作均在项目目录下进行
git checkout develop # 切换至 develop 分支
git fetch upstream # 这里我们采用 Git Fork 的方式,所以 upstream 代表上游仓库,也就是主仓库
git pull upstream develop --rebase # 同步 upstream/develop 至本地 develop,这一步可以省略
git checkout -b feature/login upstream/develop # 基于 upstream/develop 创建一个 feature/login 功能分支
# ... 功能开发 ...
git add .
git commit -m 'feat: 完成登录功能开发'
git push origin feature/login # 提供 feature/login 分支至 origin 仓库,这个代表你帐户下 fork 出来的仓库
$ # 登录 https://gitlab.xx.cn 把 feature/login PR 至 upstream/develop,review 后合并代码

5. 同步和提交代码

git fetch upstream # 先拉取主仓库的最新代码(可以省略)
git merge upstream/develop # 合并远程的 develop 分支至当前本地分支
git push origin feature/wxlogin # 提交 feature 分支至 origin 仓库

6. 发布版本

登录代码仓库地址 https://gitlab.xx.cn, 手动提pr, 然后合并到主分支,发版,打tag

over