为规范git的使用方法,提高工作效率和代码指令,结合具体实践经验,构建本文档。期望能通过持续优化,不断将零碎的知识点积累起来,形成体系化的知识。集腋成裘,聚沙成塔。
开发人员
开发人员一般遵循如下流程,完成任务。
接受任务
开发人员通过第三方平台(如ET等项目管理工具,其实完全可以自研)接受到任务:
一般为需求Feature或者Bugfix,描述如下:
## 任务类型: feature/bugfix
## 任务来源:架构师/开发经理/需求人员/测试人员
## 需求人员:
## 版本: 0.1.01
## feature中文名称: feature时需填写
## feature英文名称: feature时可不填
## bugfix: bugfix时需填写
## hotfix: hotfix时需填写
## 关联的需求或Bug的地址: 请提供链接地址
## 需求或bug描述:
示例:
## 任务类型: feature
## 任务来源:zhaojg
## 需求人员:
## 版本: 0.1.01
## feature中文名称: 居民用户登录
## feature英文名称: residentLogin
## bugfix:
## hotfix:
## 关联的需求或Bug的地址: http://xxx.xxx.xx.xx/docs/prd.doc
## 需求或bug描述:
完成居民用户的登录功能,居民用户表为resident
创建一个功能/bug修复分支
从develop分支中拉出一个新的功能分支。
应该可以直接通过IDEA完成,但还是先以Gitlab网页操作描述。
Gitlab网页操作
分支名称
尽量做到顾名思义地创建分支名称。
需求开发任务
分支名称为:feature/版本号/功能名称
示例: feature/0.1.01/residentLogin
bugfix任务
分支名称为:bugfix/版本号/b+#Id
示例:bugfix/0.1.01/b123
创建分支
Gitlab → project → Repository → Branches → New branch
输入分支名称和选择从develop创建,点击 Create branch。
## 示例
Branch name: feature/0.1.01.0/residentLogin
Create from: develop
创建一个合并请求MR,并设置为WIP
Gitlab网页操作
在创建分支后,需要立刻创建一个Merge Request(合并请求,简称MR),并将该MR设置为Work In Process(WIP)状态,即在MR的Title前添加 WIP: 即可。在此状态下,架构师可以实时看到该分支的研发进展。
Gitlab → project → Merge Requests → Merge Requests → New Merge Request
相同的project,选择Source branch为新创建的分支,Target branch为develop,点击 Compare branches and continue
## 示例
Source branch: feature/0.1.01/residentLogin
Target branch: develop
在新MR的Title里标注 WIP:,表示该MR会出现在对应的开发经理或架构师的MR列表中(Assignee指定),但开发经理或架构师无法合并,只能看到当前分支的commit进展。
## 示例
Title: WIP: feature/0.1.01/residentLogin
在Description中将MR的提交信息模板填入,并完成相关信息,在Assignee中选择对应的开发经理和架构师。
MR的提交信息模板如下,即在任务信息的基础上扩充,复制即可
## 任务类型: feature/bugfix
## 任务来源:架构师/开发经理/需求人员/测试人员
## 需求人员:
## 版本: 0.1.01
## feature中文名称: bugfix时可不填
## feature英文名称: bugfix时可不填
## bugfix:
## hotfix:
## 关联的需求或Bug的地址: 请提供链接地址
## 需求或bug描述:
## 本次合并实现了什么:
## 提交者自测列表(开发人员编写,完成则为[x])
– [ ] 是否为一次完整的提交或一次完整的bug修改
– [ ] 是否完成自测
## 代码评审列表(架构师/开发经理编写,完成则为[x])
– [ ] 是否完成代码审查职责
克隆项目代码,拉取分支
在本地克隆项目代码,创建本地分支,与远程分支对应上。选择一种操作方式即可。
IDEA方式
1. 克隆项目代码
VCS → Checkout from Version Control → Git → Clone
2. 获取最新远程分支信息
VCS → Git → Fetch
3. 创建本地分支,并与远程分支建立对应
VCS → Git → Branches → Remote Branches → origin/feature/0.1.01/residentLogin → Checkout As… → OK
IDEA已自动切至本地分支: /feature/1.0.01/residentLogin
4. 拉取最新代码
VCS → Git → Pull… → Pull
此时可以看到所关联的远程分支地址。
git命令行
git clone http://xxx.xxx.xx.x/yyy_back.git
## 查看远程分支
git branch -r
## 创建新的本地分支,并切换至该分支,与远程分支建立关联
git checkout -b local/feature/0.1.01/residentLogin
git pull
日常开发提交代码Commit&Push
要及时Push,以便开发经理/架构师了解进度。
IDEA方式
略
git命令行
git status
git diff
git add .
git commit -m ‘完成居民用户登录’
git push origin HEAD:feature/0.1.01/residentLogin
定期从develop分支合并到自己的feature分支
好处是避免在完成feature分支在往develop分支合并时需要处理大量冲突,特别是有些公用功能模块可能存在修改和完善。
IDEA方式
转到feature/1.0.01/login分支上,从develop拉代码,进行merge
Git快捷 → feature/1.0.01/login → checkout
VCS → Git → Pull… → 选择origin/develop → Pull
git方式
git pull origin develop
git push
将feature分支合并到develop分支,并提交MR(移除WIP)
此操作主要由架构师完成代码合并,所以开发人员在完成从develop分支合并到自己的feature分支后,保证代码已最新且无异常,只需要移除MR的Title的WIP标识即可。
Gitlab网页操作
Gitlab → project → Merge Requests → Eidt Merge Request → 修改MR描述中开发人员编写部分 → 移除Title中的WIP → Save change