09-Git-补丁patch操作

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信息)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Git中,我们有几种方法可以打补丁(patch)。其中两种常用的方法是使用git am命令和git apply命令。 使用git am命令可以在打补丁的同时进行commit,因此不需要重新commit。你可以使用以下命令来打补丁: - 单个补丁文件:git am 0001-xxx.patch - 某个文件路径下的所有补丁文件:git am filepath/*.patch 而使用git apply命令则需要重新commit。你可以使用以下命令来打补丁: - 检查补丁文件:git apply --stat xxx.patch (xxx.diff) - 检查补丁能否应用成功:git apply --check xxx.patch (xxx.diff) - 打补丁git apply xxx.patch (xxx.diff) 此外,你还可以使用git format-patch命令生成只适用于Gitpatch文件,该文件包含diff信息、提交人、提交时间等。如果使用git format-patch生成的补丁无法打到当前分支,git am命令会给出相应的提示并帮助你完成打补丁的工作。 请注意,以上都是使用Git命令来进行补丁操作的方法。你可以参考官方文档来获取更详细的使用说明和参数解释 。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [PatchGit补丁学习笔记](https://blog.csdn.net/m0_37221216/article/details/105334100)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值