如何使用git 生成patch 和打入patch
来源:互联网 发布:网络拓扑是什么意思 编辑:程序博客网 时间:2024/05/16 16:05
平时我们在使用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 <dir>指定patch的存放目录;
2应用patch:
先检查patch文件:git apply --stat newpatch.patch
检查能否应用成功:git apply --check newpatch.patch
打补丁:git am --signoff < newpatch.patch
(使用-s或--signoff选项,可以commit信息中加入Signed-off-by信息)
如果应用patch出现问题:
参考资料:
Git-format-patch(1) - Linux man page http://linux.die.net/man/1/git-format-patch
How to create and apply a patch with Git http://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git
- 如何使用git 生成patch 和打入patch
- 如何使用git 生成patch 和打入patch
- 使用 git 生成patch和使用patch
- git 生成patch和使用patch
- 使用Git生成patch和应用patch
- 使用Git生成patch和应用patch
- git 生成patch和使用patch
- git 生成patch和使用patch
- 如何使用git 生成patch
- 如何使用git 生成patch
- 如何使用git 生成patch
- 如何使用git 生成patch
- git 生成patch并打入主干
- git patch生成和使用
- IDEA生成patch和使用patch
- 使用 Git 生成标准 Patch
- 如何使用git 发patch
- patch/git patch使用经验
- 通过阻塞与非阻塞读取文件操作来认识回调函数
- AI 正变成黑客手中的强大武器
- VS2015/2013 无法使用'inet_ntoa': Use inet_ntop() or InetNtop() instead or define
- Android 全局异常捕获
- Faster-rcnn
- 如何使用git 生成patch 和打入patch
- while练习之计算1到100的奇数和与continue用法
- 关于maven的仓库的详解,基于nexus
- MySQL索引背后的数据结构及算法原理
- TCP与UDP在socket中传输通信的区别
- 6个编写优质干净代码的技巧
- 为什么要迎合和讨好别人
- 常用排序算法 Java 实现
- java选择排序与冒泡排序