APP版本号规则
格式: major.minor.build
- major : 主版本号
- minor : 子版本号
- build : 补丁版本号。 major或minor变更后第一次发布时,该值为0。 major和minor均无变化时,若有新bug需要修正时,该值+1。 参考: semver
GIT分支管理规则
Git tag 规则
tag名称: v${major}.${minor}
Git 分支规则
- 按照版本号定一个分支组
- 特殊分支——public。始终是最新版本的开发分支
- 每个分支组都包含2个分支
- v${major}.${minor}-dev : 开发分支。(不适用于最新版本)
- v${major}.${minor}-test : 测试分支。(始终由开发分支push到测试分支、测试通过后在该测试分支节点上打tag)
如果某一阶段 要求开发分支稳定,则开发人员可先建立本地自定义分支(分支名任意),自测OK后,再合并到本地开发分支,再自测OK后,提交的远程,最后删除本地自定义分支。
假设当前最新版本为 2.2.0 ,尚在开发中,未发布生产环境,分支示意图:
-*(tag 2.1.0)--*(-> 2.2.0)(tag v2.2-test)--*--*--*--- master (即相当于 v2.2-dev 分支)
\
\--*--*(tag 2.1.1)--*(-> 2.1.2)(tag v2.1-test v2.1-prod)--*--*-- v2.1-dev
说明:一个星号代表一次 commit。
git 操作步骤示例
# clone 仓库
git clone [email protected]:/home/git/web/nala-core
# 检出远程分支(一般都同名)
git checkout -b <local-branch-name> origin/<remote-branch-name>
# 切换(本地)分支(比如:public)
git checkout public
# 从远程更新该分支
git pull --all
# 花了N个小时做了某些修改,但是此时,可能其他人员已经向远程push新的代码了
# 修改后提交本地分支
git pull --all # 最好在本地commit前执行该语句,否则容易发生 平行四边形
git status
git add xxx
git commit -m "xxx"
# 提交到远程仓库
gitk
git pull --all # 如果在commit之后才 pull --all , 如果与远程存在冲突,在 git status 查看时,会有 需要merge 的文件
gitk #
git status # 查看是否需要merge的文件
# 1. git自动地 merge, 此时 git status 会显示没有需要 merge 的文件,自动生成 平行四边形
# 2. git无法自动 merge, 此时 git status 会显示有需要手动 merge 的文件 : 下面是手动 merge 的步骤
# 修改需要手动 merge 的文件
git add xxx
git commit -m "xx" # commit之后,就会生成平行四边形
# 如果已生成 平行四边形,需要rebase。
git rebase # 有 自动 rebase 和 手动 rebase 两种
# 手动 rebase
git branch -av # 确认当前是在 rebase 创建的临时分支上
# 修改需要 merge 的文件
git add theMergedFile # 告诉 git: 需要 merge 的文件已经修改完毕
git rebase --continue # 继续 rebase。 偶尔可能需要用到 git rebase --skip ,后者是指本地虽然还有不同的文件,但是这些文件打算忽略。
git branch -av # 确认当前分支已经回到原有的分支(比如 public、master)
gitk # 确认已经没有 平行四边形
# 推到远程
git push origin public:public
# 提交测试分支:从 pubic 分支提交到 2.2-test 分支(当前分支是public分支)
git pull
git push origin public:2.2-test
# 测试通过后,发布生产环境前,对该测试分支进行打标签
# 建议使用图形化工具gitk查看分支状态,但也可以使用 git log 命令,找到测试分支所指向的 commit。
gitk
# 打分支,并提交到远程仓库
git tag v2.2.0 c62426bd910xx6239021147497762029abde93xx # 在指定的commit上打tag
git tag v2.2.0 # 在当前分支的当前commit上打tag
git push origin v2.2.0
# 检出tag
git tag -l
git checkout tags/2.2.0