
在 Git 中生成和应用补丁patch是常见的协作方式尤其适用于未直接推送到远程仓库的代码更改。以下是完整的操作指南一、生成 Patch补丁文件1. 生成最近一次提交的补丁gitformat-patch-1这会生成一个.patch文件命名格式为0001-提交信息.patch。2. 生成最近 N 次提交的补丁gitformat-patch-3生成最近 3 次提交的补丁文件。3. 生成两个 commit 之间的补丁gitformat-patch起始commit..结束commit例如gitformat-patch a1b2c3d..e4f5g6h4. 生成所有未推送到远程的提交补丁gitformat-patch origin/main将当前分支相对于origin/main的所有提交生成补丁。5. 生成单个文件的补丁不基于提交gitdiffmy_changes.patch生成当前工作区与暂存区的差异补丁未提交的更改。6. 生成暂存区与上次提交的补丁gitdiff--stagedstaged_changes.patch二、应用 Patch打补丁1. 使用git apply适用于所有 patch 格式gitapplypatch文件特点不会自动创建提交静默应用无额外信息适用于git diff生成的补丁检查补丁是否可应用gitapply--checkpatch文件2. 使用git am适用于format-patch生成的补丁gitampatch文件特点自动创建提交保留作者、日期、提交信息更适合邮件协作场景处理冲突# 解决冲突后gitadd解决的文件gitam--continue# 跳过当前补丁gitam--skip# 终止应用gitam--abort3. 应用多个补丁文件gitam *.patch按文件名顺序依次应用所有.patch文件。三、常用参数对比命令生成方式应用方式是否自动提交git diff patchgit diffgit apply否git format-patch基于提交git am是四、实际工作流程示例场景本地提交待分享# 1. 提交更改gitadd.gitcommit-m修复登录页面样式问题# 2. 生成补丁gitformat-patch-1# 生成: 0001-修复登录页面样式问题.patch# 3. 发送补丁给同事邮件/即时通讯场景接收补丁并应用# 1. 保存补丁文件到项目目录# 2. 检查补丁gitapply--check0001-修复登录页面样式问题.patch# 3. 应用并提交gitam 0001-修复登录页面样式问题.patch五、高级用法1. 带统计信息的补丁gitformat-patch-1--stat2. 添加签名gitformat-patch-1--signoff3. 输出到指定目录gitformat-patch-1-opatches/4. 应用补丁时添加签名gitam--signoffpatch文件六、注意事项编码问题补丁文件使用 UTF-8 编码跨平台时注意换行符。空行问题git am对格式要求严格确保补丁来自git format-patch。冲突处理遇到冲突优先手动解决不要强制应用。文件路径补丁中的路径相对于项目根目录应用时需在正确位置。