0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

git log のMerge pull requestコミットメッセージからPR番号のみ抽出して一覧化するコマンド

Last updated at Posted at 2024-10-22

mainとdevelopmentの差分のPR番号一覧を取得

$ git log --merges --oneline origin/main...origin/development | grep "Merge pull request" | sed -E 's/.*#([0-9]+).*/\1/'

補足

git log --merges --oneline

--merges: マージコミットのみを表示するオプション
Gitリポジトリには、通常のコミット(単純な変更を記録するコミット)と、ブランチの統合を行った際に生成されるマージコミットがあります。
--merges オプションを使うと、マージコミットだけがフィルタリングされ、表示されます。これにより、他の通常のコミットは表示されません。

--oneline: 各コミットを1行で簡潔に表示するオプションです。
通常、git log はコミットIDや日時、作成者、コミットメッセージなどを複数行にわたって表示しますが、--oneline オプションを使うと、コミットの短縮版ID(SHAの先頭7文字)とコミットメッセージの先頭部分だけが1行で表示されます。これにより、コミット履歴を簡潔に見ることができます。

sed -E 's/.#([0-9]+)./\1/'

正規表現の構造

sed -E 's/.*#([0-9]+).*/\1/'

-E

  • 拡張正規表現 (Extended Regular Expressions) を使用するオプションです。通常の正規表現よりも強力なパターンが使えます。

s/.../.../

  • これは sed コマンドの置換 (substitution) 構文です。s/ の後ろにある最初の部分が検索するパターン、次の部分が置換する内容です。

正規表現の詳細

.*#([0-9]+).*

.*

  • 意味: 任意の文字が0回以上繰り返される部分を表します。
  • 解説: .* は、任意の文字列を指していて、行の先頭から # までの部分をすべてマッチさせます。

#

  • 意味: 文字 # をそのままマッチします。
  • 解説: これにより、プルリクエスト番号の先頭にある # を探します。

([0-9]+)

  • 意味: 数字 [0-9] が1回以上連続する部分を表します。
  • 解説: # の直後に続く数字部分がここにマッチします。カッコ () で囲んでいるため、キャプチャグループとして扱われ、後でこの部分を取り出すことができます。ここではプルリクエスト番号に相当する部分です。

.*

  • 意味: 再び任意の文字が0回以上繰り返される部分です。
  • 解説: #123 の後に続く任意の文字列全体を表しますが、これは置換時に無視されます。

置換部分 \1

  • 意味: これは正規表現内の 1番目のキャプチャグループを指します。
  • 解説: ここでは ([0-9]+) にマッチした部分(つまり、プルリクエスト番号)が \1 で参照されます。\1 によって、マッチしたプルリクエスト番号だけを出力します。

全体の動作

この正規表現は次のように動作します。

  • .*#([0-9]+).*: 任意の文字列の後に # と数字列が続くパターンを探し、その数字列をキャプチャします。
  • \1: キャプチャされたプルリクエスト番号だけを出力します。


たとえば、以下のマージコミットログ:

Merge pull request #123 from some-branch

このログに対して、正規表現は次のように処理します。

  1. .*Merge pull request という部分を無視します。
  2. # にマッチし、その後の数字 123 をキャプチャします。
  3. 残りの部分 from some-branch は再度 .* で無視されます。
  4. 最後に \1 でキャプチャされた 123 だけを出力します。

結果的に、123 だけが抽出されます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?