定位和解决git am冲突的方法
来源:互联网 发布:淘宝卖家不给发票 编辑:程序博客网 时间:2024/06/05 15:25
【正文】
在踩过几次坑之后,大多数工程师都会学会使用patch的形式来保存各个模块/功能的代码改动,这样可以很方便地为相应模块添加或者去除相关功能的代码。但是伴随着主线代码的不断更新,我们在早期保存出来的patch中有部分内容可能已经不能再直接打入现在的代码里了。这种情况下可以使用下面的方法解决冲突:
1、执行命令 git am xxxx.patch 尝试直接打入补丁。因为我们使用的 patch 已经过时了,所以这一步肯定会报错并中断(注意,虽然命令停止执行了,但我们依然处于git am命令的运行环境中,可以通过git status命令查看到当前的状态)。
2、执行命令 git apply --reject xxxx.patch 自动合入 patch 中不冲突的代码改动,同时保留冲突的部分。这些存在冲突的改动内容会被单独存储到目标源文件的相应目录下,以后缀为 .rej 的文件进行保存。比如对 ./test/someDeviceDriver.c 文件中的某些行合入代码改动失败,则会将这些发生冲突的行数及内容都保存在 ./test/someDeviceDriver.c.rej 文件中。我们可以在执行 git am 命令的目录下执行 find -name *.rej 命令以查看所有存在冲突的源文件位置。
3、依据 步骤2 中生成的 *.rej 文件内容逐个手动解决冲突,然后删除这些 *.rej 文件。完成这一步骤的操作后,我们就可以继续执行 git am 的过程了。
4、执行命令 git status 查看当前改动过的以及新增的文件,确保没有多添加或少添加文件。
5、执行命令 git add . 将所有改动都添加到暂存区(注意,关键字add后有一个小数点 . 作为参数,表示当前路径)。
6、执行命令 git am --resolved 继续 步骤1 中被中断的 patch 合入操作。合入完成后,会有提示信息输出。
7、执行命令 git log 确认合入状态。
至此,带有冲突代码的 patch 合入就操作完成了。如果要修改 commit 信息,执行 git commit --amend 命令即可。
【参考资料】
[1] 《Git am 合并 patch 时的冲突处理》
- 定位和解决git am冲突的方法
- Git am PATCH冲突解决
- Git冲突和解决冲突
- git 解决分支冲突的方法
- git 解决分支冲突的方法
- git分支的合并和冲突解决
- git 的分支处理和冲突解决
- git 冲突的解决
- git的冲突解决
- git冲突的解决
- GIT 冲突的解决
- git 冲突的解决
- git的冲突解决
- Git am 合并 patch 时的冲突处理
- 解决jquery和mootools冲突的方法
- 解决PCL和OpenCV冲突的方法
- git am PATCH 失败的处理方法
- git am PATCH 失败的处理方法
- 利用grep()方法删除数组重复元素
- myEclipse不能自动编译修改后的jsp文件
- 深度学习例子(转)
- Json对象和Json字符串的区别
- Android AIDL学习笔记
- 定位和解决git am冲突的方法
- $_SERVER/$_REQUEST/$_POST/$_GET
- Markdown的简单说明
- ubuntu64 安装jd-gui
- 1063.计算谱半径(20)
- Python eval()函数
- App采用Https的解决方案
- php 最基础优化代码
- c++调用python详解(多输入多输出)