git 生成多个patch_git 生成patch 和打入patch

本文详细介绍了如何使用Git生成patch文件,包括基于不同commit记录的多种生成方式,以及如何将生成的patch打入到项目中。通过`git format-patch`命令可以方便地创建patch,而`git am`则用于将patch应用到代码库。在应用patch前,需确保没有未完成的am操作。此外,文章还提供了关于如何检查和应用patch的提示。
摘要由CSDN通过智能技术生成

转载:https://blog.csdn.net/liuhaomatou/article/details/54410361

平时我们在使用git 管理项目的时候,会遇到这样一种情况,那就是客户使用git 生成patch 给到我们,那我们就需要把客户给到patch 打入到我们的project ,基于这样一个场景,我把git 如何生成patch 和如何打入patch 做总结

生成patch 的方法:(我这里描述的生成patch 是根据commit 记录生成的)

1.例如首先先通过git log 查看有哪一些commit

2.把第一次commit 提交以后的(不包括第一次提交)都生成patch

如上图所示:使用命令:git format-patche795fefabc

然后生成的patch 文件如下图所示

打入patch 的方法:

把生成的patch 文件copy 到一个文件夹中来(这里我创建了patch 文件夹)。如下图所示

由于这些patch显然是用git format-patch来生成的,所以用git的工具应该就可以很好的做好。git am 就是作这件事情。

在使用git am之前, 你要首先git am --abort 一次,来放弃掉以前的am信息,这样才可以进行一次全新的am。

不然会遇到这样的错误。

.git/rebase-apply still exists but mbox given.

git am 可以一次合并一个文件,或者一个目录下所有的patch,如下图所示:

---------------------------------------------------------------------------------------总结:---------------------------------------------------------------------------------------------------------------------------------------------

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

新增:如果只想为最后第N次提交产生补丁,则可以执行下列命令:

git format-patch -N

为最后一次提交产生一个补丁:

git format-patch -1

2应用patch:

先检查patch文件:git apply --stat newpatch.patch

检查能否应用成功:git apply --check newpatch.patch

打补丁:git am --signoff < newpatch.patch

(使用-s或--signoff选项,可以commit信息中加入Signed-off-by信息)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值