如何获取当前修改文件相对于初始克隆版本的git patch?
Git获取修改补丁(Patch)操作指南
确认基准版本
你首次克隆的原始版本默认对应远程仓库的默认分支,通常命名为main或master,可以通过git branch -r查看所有远程分支确认名称。如果是Fork协作场景,原始项目称为上游仓库,需要先关联后再同步基准版本。
生成相对克隆原始版本的Patch
根据你修改的提交状态选择对应命令:
- 工作区修改未暂存未提交,直接导出完整补丁:
git diff origin/main > my_change.patch
将命令中的main替换为你仓库的实际默认分支名,下同 - 修改已经提交到本地分支(假设本地分支名为
dev),导出分支所有差异补丁:git diff origin/main dev > my_change.patch - 需要保留每个提交的信息、适合PR提交的拆分补丁,可生成单提交对应单补丁的文件:
git format-patch origin/main
该命令会自动生成带编号的.patch文件,包含提交作者、提交说明等完整信息,协作场景下更规范。
Fork/PR协作场景补充操作
如果你是Fork了其他仓库进行开发,原始仓库为上游仓库,需要先完成上游关联再对比差异:
- 关联上游仓库:
git remote add upstream 原始上游仓库的克隆地址 - 同步上游最新代码:
git fetch upstream - 生成你的修改相对上游最新版本的补丁,用于PR前自查或提交:
git diff upstream/main 你的本地分支名 > pr_patch.patch - 应用他人提交的补丁:
- 普通diff生成的补丁:
git apply xxx.patch,仅应用修改到工作区 git format-patch生成的带提交信息的补丁:git am xxx.patch,应用修改同时同步提交记录
- 普通diff生成的补丁:
注意:如果修改包含二进制文件,需要给diff命令加上
--binary参数,比如git diff --binary origin/main > my_change.patch,否则二进制文件的修改不会被写入补丁文件。
内容的提问来源于stack exchange,提问作者user17182963
相关产品推荐
相关产品推荐

