如何在持续提交的项目中高效维护并测试指定PR
高效同步并测试GitHub上持续更新的PR
背景
我在GitHub上有原仓库X,已创建其分支仓库FORK_X并克隆到本地,同时添加了指向原仓库X的remote(命名为upstream),本地远程配置如下:
origin git@github.com:ME/FORK_X.git (fetch) origin git@github.com:ME/FORK_X.git (push) upstream git@github.com:THEM/X.git (fetch) upstream git@github.com:THEM/X.git (push)
我的常规PR工作流:
- 确保FORK_X的main分支与upstream/main同步;
- 基于main创建新分支;
- 提交修改并推送到FORK_X;
- 向X发起PR。
问题
原仓库X中其他贡献者的PR频繁更新,我需要高效测试并同步指定PR,无需在作者每次提交新代码时重复执行命令。目前我通过以下命令测试PR:
git remote set-url upstream git@github.com:THEM/X.git git fetch upstream pull/ID_PR/head:NAME git checkout NAME
但作者每次推送新提交时,我都要删除并重建本地分支,重复上述步骤。请问是否有无需重复执行fetch和checkout命令的方式,来便捷测试持续更新的PR?
解决方案
不需要删除重建本地分支,直接通过以下方式同步PR的最新更新即可:
方式一:直接拉取PR最新代码(无需设置跟踪)
首次拉取PR到本地(仅需执行一次):
git fetch upstream pull/[PR_ID]/head:[LOCAL_BRANCH_NAME] git checkout [LOCAL_BRANCH_NAME]替换
[PR_ID]为目标PR的编号,[LOCAL_BRANCH_NAME]为你自定义的本地分支名(比如pr-456)。后续同步更新:
当PR作者推送新提交后,切换到该本地分支,执行:git pull upstream pull/[PR_ID]/head这条命令会直接将PR的最新代码拉取并合并到当前本地分支,无需删除重建。
方式二:设置跟踪分支(简化后续操作)
如果需要更便捷的同步,可以让本地分支直接跟踪该PR的远程分支:
- 首次配置跟踪分支:
git fetch upstream pull/[PR_ID]/head:[LOCAL_BRANCH_NAME] git checkout [LOCAL_BRANCH_NAME] git branch -u upstream/pull/[PR_ID]/head - 后续同步:
之后每次要更新PR代码,只需在该本地分支下执行:git pull
注:你之前命令里的
git remote set-url upstream是多余操作,因为upstream远程已经配置完成,无需重复设置。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

