前言

使用 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 时需要用到 GitHub 的 API ,而访问这些 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 之间来回切换了。

参考