前言

使用 GitHub 与其他开发者合作需要频繁的创建 Pull Request 或者 Review 别人提交的 Pull Request

自从我使用 Emacs 来管理 Git 仓库后一直用的很舒服,但是这也仅限于自己的仓库。创建 Pull Reqeust 也是用的网页,这样的操作体验就不一致了,需要在 Emacs 和浏览器来回切换。

于是我搜索一圈发现在 Emacs 里可以使用 Forge 来创建 Pull Request ,所以本文会描述如何在 Emacs 中使用 Forge 来管理 GitHub Pull Request

配置

在使用之前需要先对 Forge 进行配置,主要有两步,分别是设置 GitHub 用户名和配置 GitHub Access Token

设置GitHub用户名

按照下面步骤执行,需要把 USERNAME 改为你的 GitHub 用户名

  • 全局设置 git config --global github.user USERNAME
  • 只对当前仓库设置 git config --local github.user USERNAME

创建GitHub令牌

在创建 Pull Request 时需要用到 GitHubAPI ,而访问这些 API 需要我们创建一个 TOKEN ,你可以在 Personal Access Tokens 中创建,你需要选择 repo、user、read:org这几个权限。 把创建好的 Token 保存到 ~/.authinfo.gpg 中,格式如下

machine api.github.com login USERNAME^forge password TOKEN

需要把 USERNAME 换成你的 GitHub 用户名, TOKEN 换成刚刚创建的,其它的可以不用动,这样就配置好了。

使用

在使用之前需要在 Magit Buffer 中使用 M-x 执行 forge-pull 进行初始化

Create Pull Request

要使用 Pull Request 需要有两个分支在远端,假设你在本地开发了一个 develop 分支,并且推送到了远程。

这时候你可以使用 @ c p 来创建一个 Pull Request ,接下来需要选择 Source branch 在这里就是 develop 、 并且选择需要合并的分支 Target branch 这里就是 master 选好之后回车就可以创建 Pull Request

然后你可以到 GitHub 上看看是不是已经创建好了 Pull Request

Merge Pull Request

当别人把功能开发好后,可以使用 b y 把需要的 Pull Request 拉到本地,然后进行 Review Review 完了如果觉得没问题使用 m i 选择要合入的分支,然后别忘了使用 P u 推送到远程。

这样你就能在 GitHub 上看到这个 Pull Request 被合入了。

总结

总的来说在 Emacs 中管理 GitHub Pull Request 还是非常方便的,再也不用在浏览器和 Emacs 之间来回切换了。

参考