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 开发分支的处理
- 先get fetch 拉取最新的远程内容(rebase origin/master的前提是把origin/master 拉取到本地,否则可能不是最新的origin/master)
- 如果本项目master有更新(发布新的commit,导致与开发分支劈叉),再在开发分支 git rebase origin/master,解决可能出现的冲突,git add 以后,不用commit,直接git rebase — continue
- ( 可选项-也可以上线前再合并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了