一、目的:

​ 1、增加项目负责人或组长对代码审核操作,对不规范代码及时打回指正。不规范代码指不符合该项目组原定编码规范、可复用功能代码多次编写、垃圾代码垃圾注释等,避免新人多次编写不规范代码。

​ 2、统一编码规范,便于后期代码交接维护。

二、具体提交流程

1、项目基本设置

​ 1.1 后期项目负责人在上传项目时,需要设置三个分支。master:主分支(默认存在),release: 开发分支,test: 测试分支。其中三个分支在允许合并到以及允许推送到上都选择maintainers权限,只能由项目负责人完成三个分支上的操作权限,不允许其他成员通过merge或者push的方式推送项目代码。

​ 人员设置:

2、个人推送代码方式

​ 2.1 拉取代码后执行git branch(获取本地所有分支)命令后,显示只有master。对于已经存在的远程分支,需要使用git chekcout 【分支名称】来拉取到本地。这里以拉取已存在的release分支为例:

​ 2.2 执行git checkout -b chore-update-【姓名首字母缩写】创建并切换到属于自己的本地分支,该分支内容与本次切换过来的release分支内容相同。这里也可以由项目负责人提前建好每个人分支名称,这时候就可以跳过接下来的2.3、2.4操作,在个人分支开发完成后直接add、commit、push即可。

Ps:此时只是在本地添加了分支,远程环境上并不存在该分支。

​ 2.3 后期本人需要在该分支上修改,完成add、commit操作。

​ 2.4 执行完commit后需要创建同名的远程分支,并做关联。执行命令 git push --set-upstream origin 【同名的远程分支名】,这里以chore-update-lly为例。

​ 此时再去查看远程分支就多了一项不受保护的远程分支: chore-update-lly

​ **ps:这里如果没有配置SSH会提示没有匹配,所以在使用git时大家一定要关联好自己的SSH。**没有SSH时会报以下错误:

​ 2.5 确定提交到个人分支后,登录117git,选中项目后发起合并请求,确定修改分支和目标分支,并填写审核人员,发起合并申请。并通知审核人员及时审核。

点击比较分支后继续按钮,进入下面页面

下面是负责人相关界面:

这里点击Merge when piole success右侧下拉时会出现两个按钮。第一个是配置自动化部署jenkins并且流水线完成后才合并(这里只是审核代码,不需要合并)。第二个直接点击合并。合并前请项目负责人或者组长做好审查代码工作!!!

选择第二个后会显示已合并状态,虽然流水线还在等待但是不影响合并功能。

此时查看release记录会增加修改的提交记录,查看release分支后已经存在合并内容。

2.6 合并完成后远程release分支相对于本地的release分支以及本地的chore-update-lly是有区别的,提前于本地分支。为了避免后期合并冲突增多,需要更新本地release以及chore-update-lly分支。

​ (1) 对于release分支,直接切换到分支执行 git pull --rebase即可。

​ (2) 对于chore-update-lly分支,需要切换到该分支,然后执行merge命令。经过上述命令可以知道release是最新的,切换到chore-update-lly分支后执行命令 git merge release,git push即可。

上面执行git merge release后,会把release的更新内容更新到本地的chore-update-lly上,但是chore-update-lly是存在没有保护状态远程分支的,这里需要提交下及时更新该远程分支。确保chore-update-lly分支内容与当前release分支最新内容保持一致。

3、常见问题

​ 3.1 在其他分支修改后如何调整到源分支?例如下图,需要在chore-update-lly上修改,但是却发生在release分支。

​ 这时候请保持在未add状态,执行git stash将内容暂存,切换到chore-update-lly后再执行git stash pop命令,将暂存内容转移至chore-update-lly分支。

3.2 如果2.6 操作不及时,可能会出现很多冲突。冲突的地方请联系代码提交者合并冲突后再提交。如果冲突过多建议重新创建本地分支及远程分支,将修改内容重新放置新分支上再执行上述操作。远程分支删除一定要跟项目负责人沟通,确认没问题后由项目负责人删除远程分支.