如何获取GitHub PR中未合并提交的补丁或Git Diff本地副本?
别发愁,针对未合并PR里的提交,咱们有几个实用的办法来导出补丁或者diff文件,下面一步步来操作:
方法一:拉取PR分支到本地后生成补丁
这种方法适合需要灵活处理提交(比如后续要应用补丁)的场景:
- 首先给本地仓库添加原项目的远程源(如果还没加的话):
git remote add upstream https://github.com/overleaf/web.git - 拉取目标PR的分支到本地,命名为
pr-103方便识别:git fetch upstream pull/103/head:pr-103 - 切换到这个本地分支:
git checkout pr-103 - 生成补丁文件:
- 如果你想每个单独的提交都生成一个.patch文件,可以用
format-patch命令,指定PR分支相对于基础分支(比如main或master)的范围:
执行后会在当前目录生成一系列类似git format-patch main..pr-1030001-xxx.patch的文件,每个对应PR里的一个提交。 - 如果你想生成包含所有提交变更的单个diff文件,用
diff命令输出到文件即可:git diff main..pr-103 > pr-103-full.diff
- 如果你想每个单独的提交都生成一个.patch文件,可以用
方法二:直接从GitHub获取补丁/文件(无需拉取整个分支)
如果不想拉取整个分支,也可以直接通过GitHub的页面规则来获取:
- 获取整个PR的完整diff或补丁:在PR的页面URL后加上
.diff或.patch后缀,访问后就能将页面内容保存为对应的本地文件,里面会包含PR所有35个提交的变更内容。 - 获取单个提交的补丁:找到PR里每个提交的详情页面,在页面URL后加上
.patch后缀,访问后就能下载该提交单独的补丁文件,逐个保存即可。
小提示:如果PR的基础分支(比如main)最近有更新,建议先拉取最新的基础分支内容,再生成diff或补丁,这样能保证文件的准确性,避免不必要的冲突提示。
内容的提问来源于stack exchange,提问作者Louise




