Git For Windows:
https://git-for-windows.github.io/
建议以Git Bash方式运行,这样更加了解每个动作后面做的事情,GUI各家背后做的事情完全对用户屏蔽,对程序员而言非常不友好。
git bash:
cd /path/to/proj
git fetch origin
git checkout -b feature1 origin/master
git branch -a
上述命令的作用是拉取远程仓库的最新代码,建立本地分支feature1和远程分支origin/feature1的跟踪关系。
首次拉取需要fetch和从远程分支建立本地分支,以后只需要pull远程分支到本地即可:
git checkout feature1
git pull origin feature1
功能分支开发完成后,我们需要将其合并到CI分支并提测,整个操作如下:
git checkout -b ci origin/ci 或 git checkout ci & git pull origin ci
git merge feature1
git push origin ci
建立本地CI分支到远程CI分支的跟踪。如果已经建立,切换到CI分支,执行拉取最新的代码合并到本地
将feature1分支合并到CI分支,合并的过程中可能产生冲突,根据具体情况进行冲突解决
将合并后的CI分支推到远程CI分支并提测
如果出现功能放弃,或者延后发布
从MASTER重新建立CI-NEW分支,对每个本冲刺可以发布的功能,在CI-NEW上执行合并操作。将CI-NEW提测,并验证可发布的功能是否有问题。
git checkout -b ci-new origin/master
git fetch origin/feature1..n
git merge feature1..n
git push origin ci -f
这里,为了保持CI的一致性,用ci-new覆盖ci(加了 -f 参数)。
解决上冲刺发布的bug
MASTER分支处于锁定状态,理论上本冲刺迭代期不会对其产生更改,但是不排除有线上紧急bug,需要紧急修复的场景,这种情况下,需要从MASTER分支开BUG分支,解决bug,并合并回MASTER分支。
git checkout -b bug-fix origin/master
//fix bug
git push origin bug-fix
如果预发验证过程中,出现bug,需要持续迭代的,那么,就根据具体的bug出现的原因来决定具体的解决方式。
如果是本冲刺的功能开发产生的bug,那么需要在对应的功能分支上修复对应的bug,然后重新合并到CI分支,进行重新上预发操作。
如果是功能合并后的,有部分数据结构和线上冲突了,那需要根据具体情况决定解决策略。
预发验证通过,即可打标签,上生产
git checkout master
git tag release-tag
git push origin release-tag