最近公司代码仓库使用的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 意思大致就是复制一个仓库,可以在这个仓库任意地修改而不会影响
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