如何处理 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!
评论
