Torihaji's Growth Diary

Little by little, no hurry.

作業ブランチからmainとの間でどのくらい diffがあるかを知りたい

はじめに

こんばんちは torihaziです

今日は PR出す時に あらかじめ だすPRが大きいか小さいか

それをあらかじめ知りたいときに使えるgit コマンドのアウトプットです

なんで

「PRが大きいです」

と言われてしまいました。

確かに、気にはしていたものの、多いよなと思っていたし、

そうだよなという感じです。

でもPR出すまで実際の差分ってどのくらいあるんだろうという時に

拡張機能のgit graph入れて、計算して、、、

ていうのはあまりにも非効率だと思ったので色々聞いてみた結果見つけました。

結論

git diff [<options>] <commit>..<commit> [--] [<path>…]
これは2つの任意の<commit>間の変更を表示するために、以前のフォーム(「..」なし)と同義となります。片側の<commit>を省略すると、代わりにヘッドを使用した場合と同じになります。

commitをAからBまでの差分を知るには

git diff 2a01877..main

という感じですね。

そうするとあるコミットから mainまでの差分を出すことができます。

ただまぁみにくい。

知りたいのは差分の行数。

optionは3つあってそれぞれ好きなやつを選んでください。

--stat, --numstat, --shortstatです

🐶: ~/Documents/personal_dev/omniauth-ruby (main)git diff 2a01877..main --stat
 Gemfile                                                      |  2 ++
 Gemfile.lock                                                 |  4 ++++
 app/controllers/root_controller.rb                           |  3 +++
 app/models/omniauth/auth_payload.rb                          |  8 +++-----
 config/application.rb                                        | 10 ++--------
 config/environments/development.rb                           |  4 ++--
 config/initializers/omniauth.rb                              |  3 ---
 db/migrate/20251117133621_change_column_default_null_true.rb |  5 +++++
 db/schema.rb                                                 |  4 ++--
 9 files changed, 23 insertions(+), 20 deletions(-)
🐶: ~/Documents/personal_dev/omniauth-ruby (main)git diff 2a01877..main --numstat
2       0       Gemfile
4       0       Gemfile.lock
3       0       app/controllers/root_controller.rb
3       5       app/models/omniauth/auth_payload.rb
2       8       config/application.rb
2       2       config/environments/development.rb
0       3       config/initializers/omniauth.rb
5       0       db/migrate/20251117133621_change_column_default_null_true.rb
2       2       db/schema.rb
🐶: ~/Documents/personal_dev/omniauth-ruby (main)git diff 2a01877..main --shortstat
 9 files changed, 23 insertions(+), 20 deletions(-)

おまけ

かっこよく +23-20 みたいな感じでやってみましょう。

使うとしたらshortstatですかね。

rooに聞いたらこうなりました。

git diff 2a01877..main --shortstat | awk -F'[ ,()]+' '{print "+"$4"-"$7}'

こうすれば

+23-20

てな感じででます。

PR出す前に行数把握目的でやってみてください