拉取、协助修改 GitHub Pull Request
拉取、修改GitHub PR的操作虽然不太常用,但是每次遇到,都会有人来问我,或者也有可能是我多管闲事去教别人,所以还是记录一下,下次就可以直接甩个链接了 。(我自己隔几个月不用也会忘 )
使用Git
拉取PR
git fetch $UPSTREAM pull/$PULL_REQUEST_ID/head:$BRANCH_NAME
$UPSTREAM
是你给这个PR所在的仓库设置的别名(下方命令中的$NAME
)。一般我们会将GitHub上的仓库进行一次 fork,大部分的工作在fork的仓库上进行。因此在使用
git remote add $NAME $REPO_URL
添加远程仓库时,我们通常将设置为origin
的$NAME
指向我们fork仓库的URL,而upstream
指向原始的仓库。(你当然也可以用其它别名,如果你已经能搞明白这里参数的含义和作用,那也许已经不需要看这篇文章了。)
这里的$UPSTREAM
一般就是upstream
。
$PULL_REQUEST_ID
是这个Pull Request的 ID,可以在PR的标题中获取,或者直接看URL最后那串数字。
$BRANCH_NAME
是你拉取到本地后创建的新分支名,尽量和别的分支名别太相似,以免找不到。
到这里一切正常的话,拉取GitHub PR的操作就成功了。接下来,你可以切换到这个分支,然后开始做你想做的事情。
git checkout $BRANCH_NAME
协助修改原PR
我们拉取PR一般可能有两个目的,一是为了帮忙Review,检查代码是否能良好的工作,二则是帮修复某些问题。
后者一般发生在原PR创建者不擅长修复某些问题的时候,我目前遇到的不多,但确实会有。
当我们帮助、修复完成PR创建者fork的仓库中创建一个新的PR:
git push [email protected]:$USER_NAME/$REPO_NAME $BRANCH_NAME:$ORIGIN_PR_BRANCH_NAME
$USER_NAME
是原PR创建者的用户名。
$REPO_NAME
是这位fork后的仓库名。
$BRANCH_NAME
是你在 拉取PR 时设置的分支名。
$ORIGIN_PR_BRANCH_NAME
则是原始PR所在的分支名。
在提交完成后,只要等原PR就好啦。
使用GitHub CLI
上面都是使用Git的「老古板们」才会使用的方法(开玩笑,Git 的操作肯定是能掌握最好),如果你们的仓库在GitHub上,可以直接使用 GitHub CLI 提供的命令,又快又方便。
比如上面的拉取PR。
gh pr checkout $PULL_REQUEST_ID
使用GitHub Desktop
如果你恰巧是个使用GUI的正常人,你还可以直接用 GitHub Desktop 来实现。
依旧以拉取PR举例: