Git

【GitHub】Pull RequestをマージさせるときにIssueも同時にクローズさせるには?

悩んでいる人

GitHubでIssueとPull Requestを作成したけど、2つを手動でクローズするのはなんだか面倒くさい・・・

IssueとPull Requestを紐づけて、同時にクローズさせるような良い方法はないだろうか?

このような悩みについてお答えしていきます。

GitHubで課題点をIssueで管理し、その課題に対する対応をPull Requestにあげて、、、
といったことを開発者の皆さんは行っているかと思います。

「いよいよPull Requestをマージするぞ!」という時に個別でIssueを手動クローズさせていないでしょうか?それだと煩わしくないでしょうか?

少なくとも私はこのように感じました。同じように思った方、思わなくてももっと便利に利用したいという方に向けて、Pull Requestをマージさせると同時にIssueもクローズさせる方法を紹介します!

前提:Issueを作成し、プルリクを出した。

まず初めに、GitHub上にIssueを作成した状態が前提になります。Issueを作成した際に表示される「#○○」というIssue番号がこれから必要になるためです。

まずは以下のようにIssueを作成しましょう。

今回作成したIssueでは「#5」というIssue番号が付いています。ここからはこのIssue番号を使用していきます。

解決:IssueとPull Requestを同時クローズさせる方法

コミットすると同時にIssueを紐づけさせる

git commit -m "fix #5 ○○問題を修正"

コミット時、以上のような「fix #5」という文字列をコミットメッセージに付けてあげます。そうすると、このコミットが含まれたプルリクをマージした時、同時にIssueもクローズさせることが出来ます。

例では、「fix」という文字列を使用していましたが他にも、、、

  1. close
  2. closed
  3. fix
  4. fixed
  5. resolve
  6. resolved

様々な文字列パターンが用意されていますので、状況に合わせて変えながら利用していくのがよいのではないでしょうか。

プルリクを作成するときにIssueを紐づけさせる

もし、「コミットメッセージに「fix #5」という文字列をつけ忘れた!?」という場合でも焦る必要はありません。

以上のようにプルリク作成時の説明文へ、コミット時と同じ「fix #5」を記入することでも、マージすると同時にIssueをクローズさせることが出来ます。

ちなみに、、、
作成時の説明文に「fix #5」を必ず記入しなくても、後から編集して付け加えることでも対応可能です。その場の状況に合わせて対応していきましょう。

また、ここでもコミットメッセージの時と同様に以下の文字列パターンを使用できます。

  1. close
  2. closed
  3. fix
  4. fixed
  5. resolve
  6. resolved

プルリクを作成した後に手動でIssueを紐づけさせる

最後の方法は少し指向を変えて紹介していきます。

コミットメッセージにも、プルリクの説明文にも「fix #5」を記入したくない!という特別な方向けに、手動で紐づける方法があります。

Pull Requestページの右下の方に「Development」という項目があります。
こちらの歯車マークから編集を行い、同時にクローズさせたいIssueを検索・選択することで、上で紹介した2つと同じIssueを同時クローズさせることも可能です。




まとめ:より便利にGitHubを使い倒す!

今回紹介した、IssueとPull Requestを紐づけて、マージと同時にIssueをクローズさせるというのはそこそこ細かい話にはなります。
ですが、より便利にGitHubを使っていくには知っておいてもお得な知識だと思います。

ぜひ、これからもGitHubを有効的に、かつ効率的に利用していくべく、ちょっとでもお得な気持ちになれる知識を探してみてください!

引用元最愛なるGitHub公式ドキュメント様
・Pull RequestをIssueにリンクする
https://docs.github.com/ja/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue