Command Reference

git-apply 教程

解释如何用 git-apply 把补丁内容应用到工作区或暂存区。

适合谁看
  • 已经会基本提交和分支操作的开发者
  • 想理解命令边界与风险的人
前置知识
  • 知道工作区、暂存区、提交的基本关系
  • 能读懂 `git status` 和简单历史图
常见风险
  • 误把本地整理命令用到共享历史
  • 在没确认恢复路径前直接继续改写历史

一句话理解

git-apply 用于把补丁内容应用到工作区或暂存区。

什么时候适合用

  • 当你需要把补丁内容应用到工作区或暂存区
  • 当你想把这类操作做成稳定流程而不是手工重复
  • 当你需要更准确地理解 Git 在这一步到底记录了什么

基本示例

git apply fix-login.patch

读这条命令时最该注意什么

补丁工作流最怕上下文不一致,所以应用前最好先确认基线、工作区状态和回退动作。

一个更稳的实践建议

先用 --check 测试补丁是否能干净应用,再用 --stat 了解影响范围,确认无误后再真正应用。

补充理解角度

  • 处理补丁邮件或补丁文件
  • 在仓库外部交换变更
  • 保留提交边界而不是手工复制改动

这条命令在流程里解决什么问题

git apply 把补丁文件的内容应用到工作区或暂存区,但不生成提交。理解它时,要把它和 git am 对照来看:apply 负责修改文件内容,am 负责生成提交。

典型用例

  • 预览和微调第三方补丁,确认改动合适后再决定如何提交。
  • 在不改变提交历史的前提下,把某段 diff 应用到当前工作区进行试验。
  • 配合 --cached 直接把补丁应用到暂存区,跳过工作区修改。

图例理解

补丁应用命令的作用面补丁应用类命令负责把外部补丁纳入本地,关键区别在于是否生成提交以及处理的是邮件格式还是纯 diff。
输入
补丁文件(diff 格式)当前工作区/暂存区
结果
被修改的工作区文件或暂存区变更
apply 和 am 的分工很明确:apply 只改文件内容,am 才会生成提交。

特殊情况与边界

  • git apply 不支持 --abort--continue,如果应用后想撤销,需要用 git checkoutgit restore 手动回退。
  • 执行前先用 git apply --check 预览而不真正修改文件,确认没有冲突再执行。
  • git apply 处理的是普通 diff 格式,不是完整的邮件格式补丁,邮件格式中的 From/Subject 等头会被忽略。
  • 路径前缀不匹配时可以用 -p 参数调整,上下文不匹配时可以用 --3way 尝试三方合并。

延伸阅读

继续搭配 git status、git log、git show 一起看,通常更容易判断这条命令对历史、索引和工作区分别造成了什么影响。