Git 实用技巧:如何将某个 Commit 导出为 Patch 补丁
在日常团队协作或跨仓库代码同步时,我们经常需要将某个特定的代码提交(Commit)提取出来,分享给他人或应用到另一个项目中。Git 提供了强大的 format-patch 工具,可以完美保留原提交的作者、时间、提交说明等元数据。 本文将为您介绍几种最常用的 Git 导出及应用 Patch 的场景。
1. 核心命令:导出单个特定 Commit
如果您知道某个 Commit 的哈希值(Commit ID),可以使用以下命令将其单独导出为一个 .patch 文件:
git format-patch -1 <commit-id>
参数说明:
:替换为您实际的提交哈希值(例如 abcd123)。 - -1:表示仅导出当前这一次提交。如果不加 -1,Git 会默认导出该 Commit 之后的所有提交。
2. 常见使用场景扩展## 导出最近一次提交 (HEAD)
如果您刚完成一次提交,想立刻将其转为补丁:
git format-patch -1 HEAD
批量导出区间内的多个提交
如果您想将 commit-A 到 commit-B 之间的所有修改打包(包含 B,不包含 A):
git format-patch <commit-A>..<commit-B>
规范输出:导出到指定文件夹
默认情况下,补丁文件会生成在当前目录下。如果提交较多,建议规范输出到特定目录:
git format-patch -1 <commit-id> -o /path/to/directory
3. 接收方如何应用 Patch?
拿到 .patch 文件后,接收方有两个命令可以选择,具体取决于是否需要保留提交历史记录:
方案 A:保留完整历史(推荐)
如果您希望在新的仓库里完美复现这个 Commit(包括原作者、提交时间和提交信息):
git am < 0001-xxx.patch
方案 B:仅应用代码修改(不留历史)
如果您只想把代码改动应用到当前工作区,后续自己重新填写 Commit 信息:
git apply < 0001-xxx.patch
总结
- 使用 git format-patch -1
快速提取单个补丁。 - 使用 git am 恢复补丁并完美保留提交日志。