拉取、协助修改 GitHub Pull Request

本文
发布于 2022 年 08 月 31 日
更新于 2023 年 07 月 22 日
发布于 2022 年 08 月 31 日

拉取、修改GitHub PR的操作虽然不太常用,但是每次遇到,都会有人来问我,或者也有可能是我多管闲事去教别人,所以还是记录一下,下次就可以直接甩个链接了 :smiling face with halo:(我自己隔几个月不用也会忘 :new moon face:

使用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指向原始的仓库(你当然也可以用其它别名,如果你已经能搞明白这里参数的含义和作用,那也许已经不需要看这篇文章了。:slightly smiling face:

这里的$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举例:

八月的碎碎念