git命令行打patch
在 Git 里打 patch(补丁)其实就是把某些提交的改动导出来,生成一个 .patch
文件,方便别人用 git apply
或 git am
打进代码里。
🔹 常用方式
1. 基于提交导出 patch
导出最近一次提交:
git format-patch -1 HEAD
会生成类似 0001-commit-message.patch
的文件。
导出最近 3 次提交:
git format-patch -3 HEAD
导出某个区间的提交(不含 old_commit
,含 new_commit
):
git format-patch old_commit..new_commit
👉 这些生成的 patch 文件里包含:
代码 diff
提交信息(commit message)
作者信息
别人应用时用:
git am 0001-xxx.patch
2. 基于工作区改动导出 patch
如果你还没提交,只是修改了一些文件,可以这样:
git diff > my.patch
👉 这样生成的 patch 只有代码差异,没有提交信息。
应用时用:
git apply my.patch
3. 基于暂存区导出 patch
如果你 git add
了改动,但还没提交,可以:
git diff --cached > staged.patch
🔹 git apply
vs git am
的区别
git apply
:只是应用补丁里的 代码改动,不会保留提交记录。git am
:会按补丁里的信息生成完整的 提交(commit message、作者等都保留)。
🔹 小结
导出提交 →
git format-patch
(推荐,完整信息)导出未提交改动 →
git diff > file.patch
应用补丁 →
git apply
(仅改动) /git am
(带 commit)