【Android】Git Patch生成的文件怎么合并到项目里面和遇到的一些问题

前言

Git patch是一种描述文件,它记录了一系列的文件变更(如新增、修改、删除)以及变更的具体内容。通过使用patch文件,可以将这些变更应用到其他代码库中,从而实现代码的同步和更新。

Git 提供了两种补丁方案,一是用git diff生成的UNIX标准补丁.diff文件,二是git format-patch生成的Git专用.patch 文件。
.diff文件只是记录文件改变的内容,不带有commit记录信息,多个commit可以合并成一个diff文件。
.patch文件带有记录文件改变的内容,也带有commit记录信息,每个commit对应一个patch文件。

生成
创建patch和diff
从某次提交(含)之前的几次提交创建Patch文件:
git format-patch <commit_sha1_id> -n

这个命令会从指定的提交开始往前数,生成指定数量的Patch文件。-n 参数表示生成的Patch文件数量,从指定提交开始往前数。

示例:

git format-patch 2a2fb4539925bfa4a141fe492d9828d030f7c8a8 -2

这个命令将生成从提交 2a2fb4539925bfa4a141fe492d9828d030f7c8a8 开始往前数的两个Patch文件。

创建某个提交的Patch文件:
git format-patch <commit_sha1_id> -1

这个命令会生成指定提交的Patch文件。

示例:

git format-patch 2a2fb4539925bfa4a141fe492d9828d030f7c8a8 -1

这个命令将生成提交 2a2fb4539925bfa4a141fe492d9828d030f7c8a8 对应的Patch文件。

创建某两次提交之间的所有Patch:
git format-patch <commit_sha1_id1>..<commit_sha1_id2>

这个命令会生成指定两次提交之间的所有Patch文件。

示例:

git format-patch 2a2fb4539925bfa4a141fe492d9828d030f7c8a8..89aebfcc73bdac8054be1a242598610d8ed5f3c8

这个命令将生成从提交 2a2fb4539925bfa4a141fe492d9828d030f7c8a8 到提交 89aebfcc73bdac8054be1a242598610d8ed5f3c8 之间的所有Patch文件。

创建Diff文件的常用方法:
使用 git diff 命令可以生成Diff文件。
git diff <commit_sha1_id1> <commit_sha1_id2> > <diff_file_name>

这个命令会生成两次提交之间的所有差异,并将其保存到指定的Diff文件中。

示例:

git diff 2a2fb4539925bfa4a141fe492d9828d030f7c8a8 89aebfcc73bdac8054be1a242598610d8ed5f3c8 > patch.diff

这个命令将生成提交 2a2fb4539925bfa4a141fe492d9828d030f7c8a8 和 89aebfcc73bdac8054be1a242598610d8ed5f3c8 之间的所有差异,并保存到名为 patch.diff 的文件中。

使用Patch文件

现在有一个【0001-.patch】文件,需要把它应用到项目里面。

1.先把文件放在项目里面(随便找一个位置都可以,但是也不要太搞了,记住文件的位置绝对路径)

2.使用这个文件

git apply xxx.patch

比如

git apply D:\Android\AndroidProject\FormalProject\xxx\xxxxxxx-ad\xxxxxx\\debug\0001-.patch

这里面我把这个文件放在我的debug文件目录下面了,这个都随便放的,但是要记得位置就好了

要是没啥问题的话,这一步之后其实就完事了,代码就合并了,但是我们遇到了代码冲突问题

比如

D:\Android\AndroidProject\FormalProject\xxxx\xxx-ad>git apply D:\Android\AndroidProject\FormalProject\xxxx\xxx-ad\qqqqq\eeee\debug\0001-.patch
error: patch failed: xxxx/src/main/java/com/wer/xxxx/work/newwork/MyActivity.java:35
error: xxxx/src/main/java/com/southgnss/xxxx/work/newwork/MyActivity.java: patch does not apply
error: patch failed: xxxx/src/main/res/layout/fragment_sample.xml:56
error: xxxx/src/main/res/layout/fragment_sample.xml: patch does not apply

通过这个错误可以看出,有两个地方存在了冲突,需要解决这两个冲突才可以合并下去。

解决冲突

首先我们先把不冲突的文件合并

git apply --reject xxx.patch

比如

D:\Android\AndroidProject\FormalProject\xxx\xxxxx-ad>git apply --reject D:\Android\AndroidProject\FormalProject\xxx\xxxxx-ad\xxx\qqq\debug\0001-.patch

经过这个之后,现在不冲突的代码已经被合并了,但是冲突的代码还在,冲突的代码会生成【.rej】文件,这个文件去哪里找呢?

就在同名文件下面

比如
上面我们有两个文件冲突,其中一个文件是【MyActivity】这个文件冲突,在执行了【git apply --reject】之后,找到这个文件【MyActivity】所在的文件夹,此时在这个文件下面会有一个同名文件【MyActivity.java.rej】。
打开这个文件然后对照【MyActivity】文件进行冲突的解决。

当所有冲突文件解决之后,就可以删除【.rej】文件了,然后把之前的那个【0001-.patch】文件也可以删除了

最后再检查一下代码,没问题了就可以正常的使用git提交代码了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/23977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java使用OpenCV计算两张图片相似度

业务&#xff1a;找出两个表的重复的图片。 图片在表里存的是二进制值&#xff0c;存在大量由于一些特殊情况例如扫描有差异&#xff0c;导致图片存的二进制值不同&#xff0c;但图片其实是一样来的。 所以找出两个表重复相同的图片&#xff0c;不可能只是单纯的比较二进制值…

flask招聘数据分析及展示平台-计算机毕业设计源码39292

目 录 摘要 1 绪论 1.1研究意义 1.2国内外研究进展 1.3flask框架介绍 2 1.4论文结构与章节安排 3 2 招聘数据分析及展示平台分析 4 2.1 可行性分析 4 2.2 系统流程分析 4 2.2.1数据增加流程 5 2.3.2数据修改流程 5 2.3.3数据删除流程 5 2.3 系统功能分析 5 2.3.1 功能性分…

亚马逊新品如何快速吸引流量?自养号测评助卖家一臂之力

在亚马逊平台上每天都会有大量的新品推出&#xff0c;而这些新品中有部分可能并没有什么流量和订单&#xff0c;有些可能上架后立马就能获得流量了&#xff0c;那么亚马逊上新品一般几天出单&#xff1f; 一、亚马逊上新品一般几天出单&#xff1f; 亚马逊上新品出单的时间因…

DispatcherTimer应用

DispatcherTimer 是 WPF 中用于执行定时任务的类&#xff0c;用于在指定的时间间隔内执行任务。它与 UI 线程的 Dispatcher 相关联&#xff0c;因此可以用来更新 UI 元素&#xff0c;而不必担心线程安全问题。 关键特性&#xff1a; 线程安全&#xff1a;DispatcherTimer 确保…

人工智能时代,想转型AI产品经理?这篇文章你不应该错过

前言 在这个日新月异的智能时代&#xff0c;人工智能&#xff08;AI&#xff09;已经从未来概念转变为推动各行各业发展的核心驱动力。作为连接技术与市场的桥梁&#xff0c;AI产品经理的角色愈发关键&#xff0c;他们不仅是技术的翻译者&#xff0c;更是创新的推动者。如果你…

Mintegral解析休闲游戏如何靠创意素材吸引玩家

核心玩法简单清晰、容易让人无限上头的休闲游戏&#xff0c;玩法机制一般比较明确、简单&#xff0c;如果要在短时间内吸引玩家注意&#xff0c;除了完整展示游戏流程以外&#xff0c;开发者需要在素材中设置更多亮点性的内容&#xff0c;如吸睛的剧情、爆炸性的视听效果等元素…

组件的注册和引用

在Vue中&#xff0c;开发者可以将页面中独立的、可重用的部分封装成组件&#xff0c;对组件的结构&#xff0c;样式和行为进行设置。组件是 Vue 的基本结构单元&#xff0c;组件之间可以相互引用。 一.注册组件 当在Vue项目中定义了一个新的组件后&#xff0c;要想在其他组件中…

Vue3_对接腾讯云COS_大文件分片上传和下载

目录 一、腾讯云后台配置 二、安装SDK 1.script 引入方式 2.webpack 引入方式 三、文件上传 1.new COS 实例 2.上传文件 四、文件下载 腾讯云官方文档&#xff1a; 腾讯云官方文档https://cloud.tencent.com/document/product/436/11459 一、腾讯云后台配置 1.登录 对…

[职场] 为什么不能加薪? #学习方法#知识分享#微信

为什么不能加薪&#xff1f; 不能加薪的根本原因&#xff0c;终于被我找到了&#xff01; 朋友们&#xff01;职场这个地方是个很神奇的世界&#xff0c;有些规则并不是你想象的那样。我们都希望能在这个世界里施展自己的才华&#xff0c;获得升职加薪的荣耀。然而&#xff0c…

seerfar丨OZON运营工具,OZON选品插件

随着全球电商市场的蓬勃发展&#xff0c;OZON作为俄罗斯及东欧地区的重要电商平台&#xff0c;吸引了众多中国商家的目光。然而&#xff0c;如何在OZON平台上脱颖而出&#xff0c;实现高效的商品运营&#xff0c;成为了众多商家亟待解决的问题。在这样的背景下&#xff0c;seer…

tailwindcss的@apply使用

tailwindcss的apply是把在html写的tailwindcss可以挪到style里面 简化页面的可读性 没写之前的 <section class"block-risk absolute flex flex-col items-center p-4 text-center left-0 text-white;" :style"{ top, left: 60px }"> </section…

浅析软件开发技术的发展历程与展望

随着信息技术的飞速发展&#xff0c;软件开发技术也在不断演进。本文旨在深入探讨软件开发技术的发展历程&#xff0c;并分析其未来的发展趋势和展望。 软件开发技术的发展历程 在回顾软件开发技术的发展历程时&#xff0c;我们不禁惊叹于这一领域的飞速进步。从早期的手工编写…

被拖欠6000万,代工大厂倒闭了····

6月7日消息&#xff0c;据综合媒体报道&#xff0c;电子烟代工大厂佳斯特电子&#xff08;东莞&#xff09;发布公告&#xff0c;将自6月3日起停止一切经营活动&#xff0c;开始自行清算工作。根据佳斯特电子科技&#xff08;东莞&#xff09;有限公司的通告&#xff0c;由于公…

pyqt6 任务栏不显示设置的icon

添加这段代码即可解决 import ctypes myappid mycompany.myproduct.subproduct.version ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)

TypeScript环境安装与VScode编辑器的使用

说明大背景环境&#xff0c;我用的是window10系统。 1.安装node.js 。 去官网下载安装包。 虽然我去的是官网&#xff0c;但是不知为何下载了个不知名的东西&#xff0c;后来又找了个链接才下载正确了。 实际上就是一个.msi的文件。我用的版本&#xff1a;node-v18.19.0-x6…

最大矩形问题

柱状图中最大的矩形 题目 分析 矩形的面积等于宽乘以高&#xff0c;因此只要能确定每个矩形的宽和高&#xff0c;就能计算它的面积。如果直方图中一个矩形从下标为 i 的柱子开始&#xff0c;到下标为 j 的柱子结束&#xff0c;那么这两根柱子之间的矩形&#xff08;含两端的柱…

能把试卷上的字消除的软件有哪些?推荐三款好用的

能把试卷上的字消除的软件有哪些&#xff1f;在数字化时代&#xff0c;我们越来越依赖科技手段来解决生活中的各种问题。其中&#xff0c;试卷上的字消除问题&#xff0c;就是一个备受关注的痛点。幸运的是&#xff0c;现在市面上已经出现了多款能够轻松消除试卷上字迹的软件&a…

力扣hot100:295. 数据流的中位数(两个优先队列维护中位数)

LeetCode&#xff1a;295. 数据流的中位数 这个题目最快的解法应该是维护中位数&#xff0c;每插入一个数都能快速得到一个中位数。 根据数据范围&#xff0c;我们应当实现一个 O ( n l o g n ) O(nlogn) O(nlogn)的算法。 1、超时—插入排序 使用数组存储&#xff0c;维持数…

【WEB自动化面试02--学习过程的问题及解决】

day01 1、报错获取不到浏览器二进制文件&#xff1a;需要指定浏览器路径及驱动路径。 第一次使用谷歌浏览器驱动&#xff0c;找不到二进制文件报错&#xff1a; selenium.common.exceptions.WebDriverException: Message: unknown error: cannot find Chrome binary Stacktra…

短视频矩阵源码----如何做正规开发规则分享:

一、什么是SaaS化服务技术开发&#xff1f; &#xff08;短视频矩阵系统是源头开发的应该分为3个端口---- 总后台控制端、总代理端口&#xff0c;总商户后台&#xff09; SaaS是软件即服务&#xff08;Software as a Service&#xff09;的缩写。它是一种通过互联网提供软件应…