文章目录

  • 1. 介绍
  • 2. 流程
  • 3. 主要操作
    • 3.1 打补丁
    • 3.2 应用补丁

1. 介绍

Patch是一个文本文件,他的内容类型类似于Git diff,但是除了代码之外,它还有关于提交的元数据如提交id,日期,提交消息等。我们可以通过提交创建一个补丁,其他人可以将他们应用到他们的仓库中。

主要是根据tag发布发行版本之后,如果有重大bug,但是下个发行版本还没有发布计划的情况下,可以打补丁,补丁可以用于更新部分代码,修复bug

2. 流程

  1. 用户A创建了工程,提交了代码,打了tag,发行了tag
  2. 用户B下载了该tag,并且进行了应用
  3. 该tag可能有bug,用户A进行代码更新,并且打了补丁
  4. 这个时候,用户B需要应用补丁,应用最新的更改

3. 主要操作

上述流程步骤中,主要关键在于打补丁和应用补丁上,下面一一介绍

3.1 打补丁

使用git format-patch生成所需要的patch: 每一次提交都生成一个patch文件,包含代码和当次提交的元数据信息

  • 当前分支所有超前master的提交:
    git format-patch -M master

  • 某次提交以后的所有patch:(不包含当次提交)
    git format-patch 分支的commitId

    git format-patch 93188a2
    
  • 从根到指定提交的所有patch:(包含当次提交)
    git format-patch --root 分支的commitId

    git format-patch --root 93188a2
    
  • 某两次提交之间的所有patch:(不包含头,包含尾)
    git format-patch 开始的commitId结束的commitId

    git format-patch 93188a2..9d616432
    
  • 某次提交(含)之前的几次提交:(从指定的提交开始(包含),倒数几次提交)
    git format-patch –个数 结束的commitId

    git format-patch -4 9d616432
    
  • 单次提交:
    git format-patch -1 要打的commitId

    git format-patch -1 9d616432
    

注意

​ 1. git format-patch生成的补丁文件默认从1开始顺序编号,并使用对应提交注释信息中的第一行作为文件名(只取英文字符)。

  1. 如果使用了--numbered-files选项,则文件名只有编号,不包含提交信息

    1. 可指定-o <dir>指定patch的存放目录

3.2 应用补丁

  • 先检查patch文件:

    git apply --stat [文件列表]

    git apply --start 0001-jasypt.patch
    
  • 检查能否应用成功:

    git apply --check 文件列表

    git apply --check 0001-jasypt.patch
    
  • 打补丁:

    git am --signoff < 文件列表

    git apply -s 0001-jasypt.patch
    

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

09-Git-补丁patch操作相关推荐

  1. Git 补丁patch

    补丁patch 补丁并不是针对所有代码的修改,只是针对于局部的修改. 在代码的维护中,如果只修改一部分代码,需要将代码完整的克隆下来,可是修改的只是很小的一部分:在这种情况下可以将一些代码的补丁信息发 ...

  2. git patch操作

    获取从FIRSST_COMMIT开始(不包含此次提交)到目前HEAD为止改动的所有文件 git diff --name-only  $FIRST_COMMIT | xargs -i cp --pare ...

  3. Git 补丁— diff 和 patch 使用详解

    Git 补丁- diff 和 patch 使用详解 1. diff 和 patch 的区别 2. 生成patch 2.1 git diff 3. git format-patch 3. 应用patch ...

  4. git 生成patch和使用patch

    啰嗦下:发现自己的blog被转载了,不过没有注明出处,有点痛并快乐着的感觉.这里正式申明下:转载请注明出处,感谢.如有商用目的请务必知会本人. 在android大环境下工作,迟早都会接触到git工具, ...

  5. 不安装git工具应用GIT binary patch

    从网上得到一GIT binary patch文件, 却没办法把它恢复出来. google后发现可以用mercurial的hg工具还apply. 以下是在ubuntu下实际操作记录. 1) 先安装mer ...

  6. Git的Patch功能

    UNIX世界的软件开发大多都是协作式的,因此,Patch(补丁)是一个相当重要的东西,因为几乎所有的大型UNIX项目的普通贡献者,都是通过 Patch来提交代码的.作为最重要的开源项目之一,Linux ...

  7. 为特定的提交生成一个git补丁

    我需要编写一个脚本来为SHA1提交编号列表创建补丁. 我尝试使用git format-patch <the SHA1> ,但是自SHA1以来,每次提交都会生成一个补丁. 生成几百个补丁后, ...

  8. git中patch的用法

    Git 的 patch 用法是指通过创建一个补丁文件来修改或提交 Git 仓库中的代码. 一个 patch 文件是一种文本文件,它记录了将要在仓库中执行的代码更改.您可以创建补丁文件并将其发送给其他人 ...

  9. 如何使用git 生成patch 和打入patch

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

  10. git生成patch和打patch

    日常开发与合作过程中,对于code生成patch和打patch(应用patch)成为经常需要做的事情,使用方法(直接给出一些examples): 生成patch git diff > xxx.p ...

最新文章

  1. 第五届全国大学生计算机系统能力培养大赛 | 赠书
  2. C# WinForm使用乐器数字接口
  3. JAVA的思维逻辑_[Java教程]计算机程序的思维逻辑
  4. 网络编程(part5)--文件读写偏移量及文件描述符
  5. App Store 排名获取。
  6. 第九篇 并发(进程和线程)
  7. MVC阻止用户注入JavaScript代码或者Html标记
  8. Chrome浏览器新功能 剪贴板多平台共享
  9. Kubernetes学习总结(17)—— Kubernetes 快速入门需要掌握的知识点总结
  10. [过年菜谱之]红烧甲鱼
  11. Objective-C学习笔记(十八)——对象方法和类方法的声明,定义及调用
  12. 面向对象的系统分析(一)-系统分析方法
  13. 桑德伯格加州大学伯克利分校2016毕业演讲+我从死亡中学到的东西
  14. 怎样记账家庭成员收支,搜索查看明细
  15. mysql 大量写入 优化_MYSQL大批量写入之性能优化
  16. 感觉自己成长慢,单点突破可以让你成长快10倍
  17. OA系统请假,出差等流程审批解析
  18. Python采集群人员数据,记录JavaScript逆向分析过程
  19. Art-Template模板语法
  20. 喝一碗孟婆汤nbsp;走一遍奈何桥

热门文章

  1. svn和git 常用的命令
  2. 版本控制工具svn和git
  3. 虚拟机安装win10教程(详细版)
  4. MySQL 实时同步 解决方案
  5. 苹果ppt_ppt制作苹果版下载 1.3.0
  6. 苹果11蓝牙配对不成功怎么办_蓝牙配对不成功怎么办,苹果手机蓝牙配对不成...
  7. xcode打包IPA(完整详细图文)
  8. ibus 五笔输入法 极点五笔6.1词库hack
  9. SSM社区医院卫生所病人患者随访信息管理javaweb网站系统设计与实现
  10. 信号与系统学习笔记与代码实现3-周期信号的傅里叶级数表示