git 打补丁方法 patch diff

(14条消息) (四十) git 打补丁方法总结_JT的专栏-CSDN博客_git 打补丁

git am 0001-Added-the-custom-font-manager.patch --whitespace=nowarn/fix

 

 

1. 应用场景
有两个git库(同一个git库不同分支可以用cherry-pick),两个git库代码是相关联的,要有选择的定期将其中一个git库的修改merge到另外一个库中。

 

 

2.方法
准备工作:初始化两个git仓库,创建一个original.txt文件,内部写有“This is original text”,然后复制到第一个仓库和第二个仓库。修改第一个仓库中的original.txt文件,添加一行“This is modify”,修改分别提交。

 

 

2.1 git diff + git apply
生成patch

 

git diff 前一个提交 目标提交 > 1.patch

 

 

 

 

应用patch

git apply 1.patch

 

可以看到patch已经打上去了,但是修改信息啥的还得自己来写一下,不是很完美。

 

2.2 git format-patch+ git am 单个patch
1. 使用git format-patch生成补丁

(git format-patch -1 commitid是提取单个commitid对应的patch)

2.使用git am 应用补丁

(一般建议git am应用补丁前使用git am --abort)

 

可以发现这种打补丁方式会将提交信息直接都打进去,非常方便。

 

 

2.3 git format-patch+ git am 多个patch
1.生成多个patch(git format-patch commitid会生成这个commit之后的所有patch,不包含该commit)

 

2. 打补丁(git am *.patch可以打进去所有patch)

 

有冲突的话解决冲突,然后git add对应文件,git am --resolve。不能解决想后面再说就git am --skip,具体使用方法参考git am --help

 

 

PS:

1 使用git format-patch生成所需要的patch:

当前分支所有超前master的提交:
git format-patch -M master
某次提交以后的所有patch:
git format-patch 4e16 --4e16指的是commit名
从根到指定提交的所有patch:
git format-patch --root 4e16
某两次提交之间的所有patch:
git format-patch 365a..4e16 --365a和4e16分别对应两次提交的名称
某次提交(含)之前的几次提交:
git format-patch –n 07fe --n指patch数,07fe对应提交的名称
故,单次提交即为:
git format-patch -1 07fe
git format-patch生成的补丁文件默认从1开始顺序编号,并使用对应提交信息中的第一行作为文件名。如果使用了-- numbered-files选项,则文件名只有编号,不包含提交信息;如果指定了--stdout选项,可指定输出位置,如当所有patch输出到一个文件;可指定-o <dir>指定patch的存放目录;


2应用patch:
先检查patch文件:git apply --stat newpatch.patch
检查能否应用成功:git apply --check newpatch.patch
打补丁:git am newpatch.patch
————————————————
版权声明:本文为CSDN博主「i加加」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_20059415/article/details/80598347

posted @   Bigben  阅读(3300)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2015-01-14 Android ImageView图片自适应
2015-01-14 Java关键字synchronized详解
点击右上角即可分享
微信分享提示