使用git fetch和git merge手动解决一次pull request冲突

2023-11-05

问题提出

github上的一次 pull request 出现了 conflicts ,需要解决合并冲突:

01 pull request出现冲突

冲突的内容主要是新增功能的代码和修改的注释:

02 conflict展示-新增内容

03 conflict展示-修改注释

问题思考

由于之前没有更新分支,同时又提交了分支中的代码,而git不能在不丢失提交的情况下对远程库进行修改。

解决思路:把原仓库的 master 分支 fetch 到本地,merge 后再 push

问题解决

设置原仓库地址

原仓库的 master 分支和本地的 jellyfishmix 分支发生了冲突,我们需要把原仓库的 master 分支拉取到本地,才能进行后续处理。

第一步,需要先设置原仓库的地址。

git remote add [原仓库的名字,可自定义] git@github.com:xxse/xx.git

例如本文中使用:

git remote add gpake/qiniu-wxapp-sdk git@github.com:gpake/qiniu-wxapp-sdk.git

原仓库的地址在本地中就有了记录,给原仓库地址起的名字叫 “gpake/qiniu-wxapp-sdk”

拉取原仓库master分支

使用 pull 拉取原仓库的 master 分支:

git pull gpake/qiniu-wxapp-sdk master:jellyfishmix

提示:pull 的格式(参考自 git pull命令的用法

git pull <远程仓库名> <远程分支名>:<本地分支名>

git pull拉取远程分之后会与本地分支进行合并

04 git remote, git pull

看到执行结果中提示:! [rejected] master -> jellyfishmix (non-fast-forward)

此提示说明无法将原仓库的master分支与本地的jellyfishmix进行合并,原因分析可见:Git错误non-fast-forward

解决本地分支与原仓库master分支的冲突

解决此问题的两步操作:

  1. git fetch 把远程分支拉取到本地
  2. git merge 与本地分支合并(如果有冲突就要解决冲突后再合并)

本文中,博主执行:

git fetch gpake/qiniu-wxapp-sdk master
git merge FETCH_HEAD jellyfishmix

05 git fetch, git merge

执行结果提示:Automatic merge failed; fix conflicts and then commit the result.

最初考虑使用 rebase 解决此问题,关于 git rebase 的介绍请参考:Rebase 代替合并

但是 git rebase 存在危险性,详情请看上面链接的那篇文章.故决定不实用git rebase,而使用手动解决冲突的方式。

vi 编辑存在冲突的文件

06 vi 编辑conflicts

例如,存在冲突的位置:

<<<<<<< HEAD
        // qiniuShouldUseQiniuFileName 如果是 true,则文件的 key 由 qiniu 服务器分配(全局去重)。
=======
        // 如果是 true,则文件的 key 由 qiniu 服务器分配 (全局去重)。
>>>>>>> FETCH_HEAD

======= 上下是发生冲突的两个分支,我们要保留的是HEAD分支的内容,删除冲突位置HEAD分支以外的内容,变成如下:

        // qiniuShouldUseQiniuFileName 如果是 true,则文件的 key 由 qiniu 服务器分配(全局去重)

07 vi 编辑conflicts,手动删除冲突

:wq 保存退出

或者也可以使用图形化IDE的编辑器来编辑存在 conflicts 的文件。

将所有存在 conflicts 的文件均进行这样的手动操作。

08 将所有存在 conflicts 的文件均进行这样的手动操作

重新提交

执行 git commit

git commit -am '修复了与master分支的合并冲突'

执行 git push

git push origin jellyfishmix

09 执行git commit和git push

pull request 看一下 conflicts 是否已解决:

10 成功解决conflicts

成功解决 conflicts !

one more thing…

可选方案

文末附 在Git的PR(Pull Request)提示冲突无法merge合并的解决方案

11 可选方案

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用git fetch和git merge手动解决一次pull request冲突 的相关文章

随机推荐

  • Python清洗数据具体操作

    数据清洗是指在处理数据之前对数据进行预处理的过程 这个过程通常包括检查数据的完整性 清除数据中的缺失值 异常值和重复值 以及对数据进行格式转换和数据转换等 在 Python 中 可以使用 pandas 库来方便地进行数据清洗 下面是一些常见
  • Android 禁止RecycleView的滑动

    1 问题 使用RecycleView 时 如果数据量很少只有几个 需求不需要它上下左右滑动 在xml配置中加上Android scrollbars none 这只是去掉了滑动bar 但是RecycleView 上下还是能滑动 且有阴影 2
  • 【message:发生错误 Error: D:\微信小程序\second-demo\package.json 对应的 node_modules 不存在】

    微信小程序安装vant weapp报 node module不存在 提示 这里简述项目相关背景 想使用vant weapp写小程序 在安装的时候踩了一些坑 记录一下 1 安装 vant weapp 提示 这里一个一个来描述遇到的问题 我是根
  • 网络驱动程序snull

    由于下次开会要做报告 所以就先把字符设备驱动程序那块搁浅了 先来复习下网络驱动这块 虽然以前看过 学习过网络驱动的相关内容 但是当再次学习这块的时候 仍然有新的收获 或许是时间长不看了 有些东西的印象浅了 或者应了那句话 温故而知新 ok
  • 多线程能有事务吗?

    需求 多线程插入 保证原子性 要么都成功 要么都失败 其中一个线程报错 所有线程回滚 为什么做不了 首先事务的四大特性 ACID 特性都知道吧 面试中张口就来 原子性 Atomicity 一个事务要么全部提交成功 要么全部失败回滚 不能只执
  • SpringFramework核心技术五:面向切面编程(AOP)和代理机制

    AOP与代理 Spring AOP使用JDK动态代理或CGLIB为给定目标对象创建代理 只要有选择 JDK动态代理就是首选 一 代理机制 如果要代理的目标对象实现至少一个接口 则将使用JDK动态代理 目标类型实现的所有接口都将被代理 如果目
  • socket异步编程--libevent的使用

    http www cnblogs com cnspace archive 2011 07 19 2110891 html 这篇文章介绍下libevent在socket异步编程中的应用 在一些对性能要求较高的网络应用程序中 为了防止程序阻塞在
  • Spring Boot集成RocketMq(一看就会)

    目录 1 创建topic 2 新建Spring boot项目 3 导入依赖 4 配置yml文件 5 新建Controller 生产服务 6 新建消费者 7 配置类 定义topic 8 添加消息以及 消费者查看 8 1 调用接口 往Mq中添加
  • 岛屿数量(Java)

    分析 把1当成陆地 0当成海 简单来说只要上下左右如果是1的话就可以看成一个陆地 从示例中也可以很清楚的看懂 思路 用一个和grid大小一样的整型二维数组arr来代表岛屿的生成过程 遍历grid 如果遇到grid i j 1 arr i j
  • 软件生命周期与技术人的职业周期

    话题有点大 但还是忍住想说两句 也算把自己曾经的困惑落在纸上 做个记录 什么是软件的生命周期的 相信你能比我还熟练的罗列出来 从初步规划 到需求分析 再到系统设计 接着系统实现 往下系统测试 跟着发布部署 最后运行维护 中途免不了打些小补丁
  • UART通信原理

    UART 通信格式 串口全称叫做串行接口 通常也叫做 COM 接口 串行接口指的是数据一个一个的顺序传输 通信线路简单 使用两条线即可实现双向通信 一条用于发送 一条用于接收 串口通信距离远 但是速度相对会低 串口是一种很常用的工业接口 I
  • python国内镜像源

    让python pip使用国内镜像 国内源 清华 https pypi tuna tsinghua edu cn simple 阿里云 http mirrors aliyun com pypi simple 中国科技大学 https pyp
  • 有关HC-05蓝牙模块的学习记录

    文章目录 HC 05学习笔记 一 HC 05的基本硬件介绍 二 工作原理 三 使用方法 一 硬件连接 二 软件控制 1 第一个片段 2 第二个片段 四 具体应用 一 信息的传送 二 手机操纵单片机 五 注意事项 一 AT状态 1 第一种方法
  • mysql存储过程之循环(WHILE,REPEAT和LOOP)

    MySQL提供循环语句 允许我们根据条件重复执行一个SQL代码块其中有三个循环语句 WHILE REPEAT和LOOP 我们接下来分别看下 首先是WHILE语句来看下语法 WHILE expression DO statements END
  • 在 C++ STL 中复制的不同方法

    文章目录 1 C STL 中复制的不同方法及实例解析 传送门 gt gt AutoSAR实战系列300讲 糖果Autosar 总目录 1 C STL 中复制的不同方法及实例解析 C STL 中存在各种不同的 copy 它们允许以不同的方式执
  • idea设置控制台为单独的窗口

    如图 点击控制台右上角的齿轮 设置 按钮 然后点击windowed mode就可以分离出来了
  • 推荐一组用过好几年的非常稳定的dns

    通常宽带或路由里 都是未设置dns 自动获取的是本地运营商推荐的dns 那些dns非常非常的不稳定 经常打不开网页或有些图片不显示 甚至更可恶的还有广告劫持 下面推荐一组用过好几年的dns 比较稳定 分享给大家 223 5 5 5 4 2
  • you need to install ‘unbuffer‘ (from package expect or expect-dev)

    在下载完RK3399 Linux SDK后的第一次编译时 报以下错误 you need to install unbuffer from package expect or expect dev log saved on home user
  • Java循环查询数据库优化

    1 static 和 final 的用法 static 的作用从三个方面来谈 分别是静态变量 静态方法 静态类 静态变量 声明为 static 的静态变量实质上就是全局变量 当声明一个对象时 并不产生static 变量的拷贝 而是该类所有实
  • 使用git fetch和git merge手动解决一次pull request冲突

    问题提出 github上的一次 pull request 出现了 conflicts 需要解决合并冲突 冲突的内容主要是新增功能的代码和修改的注释 问题思考 由于之前没有更新分支 同时又提交了分支中的代码 而git不能在不丢失提交的情况下对