gitlab Merge Request 流程
1 本地 master 同步至最新
如果本地只有一个 ==master== 分支,可直接输入 git pull
同步
如果本地除了 ==master== 之外还有其它分支(例如 dev),输入 git pull origin master
同步。
2 创建开发分支并提交代码
确保本地 ==master== 分支是最新并且是干净的(没有任何改动),git status
显示如下内容说明没问题:
如果本地有改动,需要 git stash
保存修改:
git stash push -u -m "提交说明,例如:保存本地修改"
创建一个开发分支,分支名可以取功能名称,例如 ftp_server、ftp_client 等等,我这里图省事直接取名 ==zhangsan==:
git branch zhangsan
切换到开发分支:
git switch zhangsan
在新分支上进行新功能开发或者 bug 修复等操作,例如我修改了 ==rules/lib_src.mk== 这个文件:
提交代码到服务器,注意分支名别输错了:
git add rules/lib_src.mk
git commit -m "测试gitlab merge request"
git push origin zhangsan
提交成功后,可以在 gitlab 上的 ==zhangsan== 分支上看到刚提交的代码:
3 发起 merge request
在 gitlab 发起 merge request,点击左边的 ==Merge Requests==,弹出子页面后点击 ==New merge request==:
确定 ==Source branch== 和 ==Target branch==,点击 ==Compare branches and continue==:
填写 ==Title==(必填) 和 ==Description==(选填),==Assignee== 选择代码评审人,最后 ==Submit merge request==:
评审人评审通过后,这次提交就会被合入主线 ==master== 分支,并会删除服务器上的 ==zhangsan== 分支,提交人本地的 ==zhangsan== 分支需要自己删除:
评审人如果评审不通过,会在不合理的地方添加注释,并拒绝此次提交,提交人修改之后重新发起 merge request
:
4 同步主分支并删除本地分支
采用评审人评审通过并 merge 完成后,提交人需要切换到 ==master== 分支并同步,然后删除临时创建的开发分支:
git switch master
git pull origin master
git branch -D zhangsan
5 合并冲突解决
有冲突的情况下,merge
按钮不可点击。
此时不需要 close merge request
,假设正式的仓库和远程分支是 origin/master,本地分支是 master;你自己的仓库和分支是 lichen/master,自己的本地分支是 lc_master,做如下操作:
# 更新主仓库
git checkout master
git pull origin master
# 更新自己的仓库
git checkout lc_master
git pull lichen master
# master合并到lc_master,–no-ff表示是禁止快进式合并
git merge --no-ff master
# 上一步操作之后提示冲突
# 解决冲突
# 提交冲突修改
git commit -m "fix(合并冲突):解决合并冲突"
# 推送之后之前提交的merge request会自动更新,点击merge按钮即可
git push lichen HEAD:master