此时我本地有一个主分支 develop ;然后我根据 develop 主分支创建了一个 work/BCS-298 分支;
1. 我在本地 work/BCS-298 分支中修改了代码,准备 push 推送到远程 work/BCS-298 仓库;
2. 我在 push 本地 work/BCS-298 分支代码之前,先更新了本地 develop 主分支代码;
git stash // 保存本地分支修改
git checkout develop // 切换到主分支
git pull // 拉取主分支最新代码到本地仓库
git checkout work/BCS-298 // 切换到 work/BCS-298 分支
git merge develop // 将本地分支 develop 合并到当前 work/BCS-298 分支中

此时我这里是没有冲突(有的人可能会有冲突,按照下面 第8步 操作即可)

3. 我将本地分支 work/BCS-298 的代码 push 到我自己的远程 work/BCS-298 分支上
git add .
git commit ...
git push
4. 然后在 gogs 上发起将 work/BCS-298 中的代码合并到主分支 develop 上的请求;

创建合并请求,提示该请求可以自动合并

Android Studio GitLab分支发起合并请求 gitlab合并请求有冲突_解决冲突

5. 但是我前面又有另一个人创建了合并请求,且管理员还没有合并;

此时就有两个合并请求,一个是别人的,一个是我的;我的在他的后面;

Android Studio GitLab分支发起合并请求 gitlab合并请求有冲突_git_02

6. 当管理员先将别人的合并请求进行合并了,我的合并请求就提示存在冲突;

这是因为刚刚另外一个人的合并请求中修改的代码和我的修改冲突了。

Android Studio GitLab分支发起合并请求 gitlab合并请求有冲突_解决冲突_03

7. 这时就需要我手动解决冲突

因为刚刚另一个人的代码已经被管理员合并到了 develop 分支中
所以先进入本地的 develop 分支,拉取最新代码

git checkout develop
git pull
8. 合并出现冲突

git merge develop 此时会出现冲突


Android Studio GitLab分支发起合并请求 gitlab合并请求有冲突_推送_04


此时本地分支名后面会出现 | REBASE 1/1 字段

git status // 查看冲突文件有那些

可以用 VS 或 IDEA 解决冲突(比较方便)
也可以用 vim 文件名 命令解决冲突(比较麻烦)

9. 解决完冲突后,再提交代码
git add .
git commit ...
git rebase --continue // 继续合并
git rebase --abort //取消合并

此时冲突已经解决完毕,本地分支名也变正常了


Android Studio GitLab分支发起合并请求 gitlab合并请求有冲突_推送_05


最后执行 git push 推送修改到远程分支成功

10. 再去 gogs 上发起合并请求,就不会提示存在冲突了,可以进行自动合并


git pull之后出现REBASE(1/1) (已解决)git rebase后出现(master|REBASE 1/1)的解决办法