1 第一次使用GIT之前需要设置用户名和邮箱
git config --global user.name "qzeng"
git config --global user.email xxx@qq.com
2 常用命令
git clone <path to repository> | 克隆远程代码库到本地 |
git pull --rebase | 同步本地代码库,并同时衍合,将本地提交移动到最新提交之后,避免多余的合并提交 |
git mergetool --tool <toolname> | 使用工具解决合并冲突 |
git status | 查看当前分支,本地修改,暂存文件,非暂存文件等 |
git diff | 查看还没有被暂存的本地代码改动 |
git diff --cached | 查看已经暂存的本地代码改动 |
git add | git add -A | git add -A -n | 暂存一个本地修改。-A(all)代表暂存所有本地修改和新建文件。-n (dry run)代表只查看受影响文件但不做暂存。 |
git commit -m "message" | 提交暂存的改动成为一个本地提交 |
git push | 推送当前分支本地提交到远程,默认是提交到对应的远程库 |
git branch -a | 查看分支 |
git branch <branchname> | 创建分支 |
git checkout <branchname> | 切换分支 |
git merge <branchname> | 把<branchname>合并到当前分支 |
git stash | 隐藏当前改动 |
git stash list | 列出所有隐藏项 |
git stash show | 查看某一个隐藏项的内容 |
git stash pop | 恢复最新的隐藏项 |
git branch --set-upstream-to=origin/<branch> <local_branch> | 设置本地分支追踪的远程分支 |
3 发布规则
Version (Red) |
Definition |
Owner |
Comment |
1.1.0.0.0 |
Major Release |
DEV Manager |
Only increase by 1 when there is architecture or main framework change. Sub version will be reset to 0. |
1.1.0.0.0 |
PROD Release |
DEV Manager |
Increase by 1 for each Production release. Sub version will be reset to 0. |
1.1.1.0.0 |
UAT Release |
DEV Manager |
Increase by 1 for each UAT release. Sub version will be reset to 0. |
1.1.0.0.0 |
Feature Development |
DEV |
Increase by 1 if Develop Team initialized a new feature or enhancement. |
1.1.0.0.0 |
Bug Fix |
DEV |
Increase by 1 when developer fixes a bug reported by testers or clients. |
可以计划使用前三位,其中第三位意义稍有不同,会对应的是SIT Release。
例如:
每周三,从dev分支cut分支release_a.b.c.0.0,并发布到SIT env。
QA基于release_a.b.c.0.0做集中测试,发现的bug和新的feature都会在下周的release_a.b.c+1.0.0发布到SIT。
稳定版本会被推送到UAT。按照项目计划时间表,最后的稳定版本被推送到生产。
SIT发布的版本保证版本号前三位的连续,即1.0.0.0.0,1.0.1.0.0,1.0.2.0.0。。。
UAT和生产发布的版本保证版本号前两位的连续,即1.0.0.0.0,1.1.0.0.0,1.2.0.0.0。。。
4 分支规则
master | Git的主分支,最稳定的分支,所有release分支发布到生产之后会merge到该分支。dev分子也必须保持与其的同步。 | 只接受从release分支的合并和hotfix。 |
dev | 开发的主分支,开发人员应该在测试过自己的代码之后(或许还会有自动化测试案例)才提交到该分支。release分支会从这里cut。务必保证分支健康度。 |
Daily Build基于该分支。 代码提交到dev分支后,resolve对应的JIRA(即Status=TEST IN PROGRESS) |
release_x.x.x.x.x | 发布分支,从dev cut出来。理论上只接受dev分支cherry-pick过去的bug fix。QA集中在相关测试。被部署到生产(或者UAT)之后,需要merge到master。 | QA验证后,close对应JIRA(即Status=CLOSED) |
其他分支 | 开发人员自己根据feature或者偏好创建自己的开发分支,建议每日保持与dev同步。该分支上开发完成,unit case完成,自测完成的代码可以merge到dev分支。 | 代码全部或部分提交到自己的开发分支后,即开始对应功能开发或bug fix任务,start对应的JIRA(即Status=IN PROGRESS) |