1 开发阶段

1.1 commit message形式必须如下

git commit -m “LN-17214: add newloading page” 开发需求号 + 内容(内容不能太少,可能导致push不上)

1.2 分支命名 dbglm_17214 (dbg姓名首字母_需求编号)

2 提测阶段

2.1 更新测试分支

测试分支为 dbg_ci_int
git fetch 拉取最新的测试分支,

2.2 合并开发分支内容

git cherry-pick commitID ,选择合并开发分支的commit(最好把开发分支多个conmmit合并为一个commit)

2.3 push测试分支

合并后,先push,因为公用一个测试分支,如果远程测试分支没有新的提交,则可以顺利push上去
如果有新的提交,则git fetch ,然后 git rebase origin/dbg_ci_int, 然后再push,应该就可以了

3 发布阶段

确认代码无误

3.1先rebase一下origin/master(防止期间master有更新)

3.2再把 所有commit合并成一个commit

*备注
先rebase or 先reset,,这是个问题,视情况而定
比如,多个commit,而且预判冲突较多,如果先rebase,会在每次commit都有可能多次解决冲突,这种情况,适合先合成一个commit,再rebase,这样只会解决一次commit

4 合并多个commit

4.1 变基式合并

git rebase -i head~3 进入交互界面 ,可以合并多个commit 为 一个

4.2 reset式回退重新提交

参考
https://git-scm.com/docs/git-reset
链接
git reset commit ,回退到某一版本,可选项有—soft —mixed (defalut) —hard
—soft 只会回退版本区,版本区内容变回暂存区,工作区不会改变

—mixed 版本区和暂存区改变,暂存区的内容变回工作区 (一般利用这样,全部回到工作区,然后再一次性commit,达到合并多个commit)

—hard 版本区、暂存区、工作区 全部回退,既工作区修改丢失

4.3 周一、周三合并master(周二周四会master会有发布,周一周三测试分支会回滚)

4.3.1 开发分支的处理

  1. 先get fetch 拉取最新的远程内容(rebase origin/master的前提是把origin/master 拉取到本地,否则可能不是最新的origin/master)
  2. 如果本项目master有更新(发布新的commit,导致与开发分支劈叉),再在开发分支 git rebase origin/master,解决可能出现的冲突,git add 以后,不用commit,直接git rebase — continue
  3. ( 可选项-也可以上线前再合并commit)git reset —mixed origin/master 全部回到工作区,重新一次commit,达到合并commit的目的。

    4.3.2 测试分支的处理

    测试分支回滚以后,可能导致本地dbg_ci_int 和 origin/dbg_ci_int 有较多的劈叉(因为本地有自己和别人cherry-pick上去的多个commit,origin有新发版的commit),最佳处理处理方式不是reabse,而是delete -D本地dbg_ci_int,然后重新创建dbg_ci_int分支,然后重新cherry-pick 你的开发分支的commit,每个开发人员都这样处理,就不会互相影响,保持测试分支的整洁和独立。

    5 远程分支管理

    只要本地开发分支rebase以后,就不能往原来的远程分支push了