拉取、协助修改 GitHub Pull Request

本文发布于 2022 年 08 月 31 日

拉取、修改 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 最后那串数字。

PR 的 ID
PR 的 ID

$BRANCH_NAME 是你拉取到本地后创建的新分支名,尽量和别的分支名别太相似,以免找不到。

到这里一切正常的话,拉取 GitHub PR 的操作就成功了。接下来,你可以切换到这个分支,然后开始做你想做的事情。

git checkout $BRANCH_NAME

协助修改原 PR

我们拉取 PR 一般可能有两个目的,一是为了帮忙 Review,检查代码是否能良好的工作,二则是帮这个 PR 修复某些问题。

后者一般发生在原 PR 创建者不擅长修复某些问题的时候,我目前遇到的不多,但确实会有。

当我们帮助、修复完成 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 的创建者通过并合并你的 PR 就好啦。

使用 GitHub CLI

上面都是使用 Git 的 “老古板们” 才会使用的方法(开玩笑,Git 的操作肯定是能掌握最好), 如果你们的仓库在 GitHub 上,可以直接使用 GitHub CLI 提供的命令,又快又方便。

比如上面的拉取 PR。

gh pr checkout $PULL_REQUEST_ID

使用 GitHub Desktop

如果你恰巧是个使用 GUI 的正常人,你还可以直接用 GitHub Desktop 来实现。

依旧以拉取 PR 举例:

使用 GitHub Desktop 拉取 PR
使用 GitHub Desktop 拉取 PR
八月的碎碎念