如何处理 gitlab fork pull request 冲突
gitlab提供了git的一个ui界面,但是在处理冲突方面表现的不好,一些复杂场景还需要通过命令行来解决。本文所述即是一例,解决过程记录如下。
问题背景
repo A :http://ip:port/share/adminApi.git
repo B: http://ip:port/esb_dept/adminApi.git
B
是从A
里fork
出来的。在实际软件开发过程中,A
是框架工程,B
是由A
派生而出的一个实际项目。
现在A
发生了更新,需要将A
的变动合并到B
中。
正常情况下,通过gitlab,在repo A
中新建合并请求到B
即可,但由于repo B
中有工程师修改了框架代码,导致产生冲突,合并失败。
解决步骤
在本地
B
项目根目录,查看可用的远程仓库。默认情况下,只会有repo B
[web@localhost esbadminapi]$ git remote -v
origin http://ip:port/esb_dept/adminApi.git (fetch)
origin http://ip:port/esb_dept/adminApi.git (push)将
repo A
添加进来。此时再执行git remote -v
应该出现2个仓库[web@localhost esbadminapi]$ git remote add upstream http://ip:port/share/adminApi.git
[web@localhost esbadminapi]$ git remote -v
origin http://ip:port/esb_dept/adminApi.git (fetch)
origin http://ip:port/esb_dept/adminApi.git (push)
upstream http://ip:port/share/adminApi.git (fetch)
upstream http://ip:port/share/adminApi.git (push)将
repo A
的内容pull
到本地[web@localhost esbadminapi]$ git fetch upstream
remote: Counting objects: 76, done.
remote: Compressing objects: 100% (61/61), done.
remote: Total 76 (delta 34), reused 1 (delta 0)
展开对象中: 100% (76/76), 完成.尝试将
repo A
合并到 本地仓库。不出意外的出现冲突[web@localhost esbadminapi]$ git merge upstream/master
自动合并 src/main/resources/properties4mssql2008.sample
冲突(内容):合并冲突于 src/main/resources/properties4mssql2008.sample
自动合并 src/main/java/com/winning/adminapi/Application.java
自动合并失败,修正冲突然后提交修正的结果。在
IDEA
中,根据提示的冲突文件,去处理冲突。IDEA
会将冲突的代码段标识出来。处理完成后,再次执行
git merge upstream/master
,完成合并。
END
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LeFer!
评论