PR与issue的联动维护

当我们需要解决项目中的一个bug时,通常一个新的PR会伴随一个issue,本文将介绍仅需通过创建PR时一个操作,关联上issue,然后当PR被同意之后,对应关联的issue也将随之关闭。

同样,我先在示例项目中创建一个issue

image_20220719_145415

这种时候,作为项目维护者,我们可以直接点击Development中的 Create a branch 创建一个fix分支,这样会自动关联上这个issue,同理,当该fix分支创建的PR被合并之后,issue也会自动关闭。

不过这里不讲此种方案,大家有兴趣可以自行体验一番。

这里讲的是我们更常见的一种操作,在本地编辑器里,基于最新的main分支切出一个fix分支,如下:

  1. git checkout main
  2. git pull
  3. git checkout -b fix_testbug

然后就是在fix_testbug分支上进行对应问题的修复,这块儿不对赘述。

当我们感觉修复没问题了,也进行过自测了,就可以将此临时分支进行提交:

  1. git add .
  2. git commit -m "fix: test bug"
  3. git push --set-upstream origin fix_testbug

推到远程之后,我们来到GitHub页面中,此时可以看到GitHub会自动提示一个新的分支可以合并:

image_20220719_150429

可以直接点击Compare & pull request

image_20220719_151051

注意右侧Development中的说明,我们可以通过在说明中添加一些关键字,从而对issue进行关联,并触发关闭。当然也可以先创建PR,然后再进行关联也可以:

image_20220719_151313

完成关联的PR,可以看到有这样的状态显示:

image_20220719_151423

这个时候,我们点击到#21issue中,也可以看到被关联到该PR上了:

image_20220719_151547

现在我们将 #23PR进行合并,合并之后可以看到关联的issue也被关闭了,此次关联的临时分支也被删除了:

image_20220719_151825

以上就是项目协同中,PRissue的联动维护。


另外: 这里插一个小点,当我们完成一次PR流程之后,作为项目主维护人,通常会再次切回到main分支,然后将远程被合并到main分支的代码拉到本地:

  1. git checkout main
  2. git pull

这样执行之后,会发现本地代码竟然已经超过远程分支了:

image_20220719_154112

其中的389fe那次是当前远程分支的ID,我们可以执行如下命令,与远程对齐:

  1. $ git reset --hard origin/main
  2. HEAD is now at 389fe7b fix: test bug (#23)

这样本地与远程就实现了对齐,在下次重新切分支,然后提交PR的时候,就不会出现上边那种,带了几次Merge的情况了。

图示如下:

image_20220719_154244

理论上这次只有一个提交,而不应该出现3个commit,就是这个原因。