Git の 2 つのコミット間で変更された行数を計算する簡単な方法はありますか?
を実行しgit diff
て行数をカウントすることはできるのですが、面倒なようです。また、自分のコミットのみを行数に含める方法も知りたいです。
ベストアンサー1
--stat
のオプションが必要ですgit diff
。または、これをスクリプトで解析する場合は、--numstat
オプションが必要です。
git diff --stat <commit-ish> <commit-ish>
--stat
マージ後に表示される、人間が読める形式の出力を生成し、--numstat
スクリプトが簡単に解釈できる適切なテーブル レイアウトを生成します。
どういうわけか、これを複数のコミットで同時に実行しようとしていることに気付きませんでしたgit log
。これは のタスクです。Ron DeVera はこれについて触れていますが、実際には彼が言及しているよりも多くのことができます。 はgit log
要求された情報を印刷するために内部的に diff 機構を呼び出すので、 だけでなく、任意の diff stat オプションを指定できます--shortstat
。おそらく使用するのは次のようになります。
git log --author="Your name" --stat <commit1>..<commit2>
--numstat
またはも使用できます--shortstat
。git log
コミットを選択する方法は他にもいろいろあります。ドキュメンテーション--since
. (コミット範囲を指定するのではなく、先週以降のコミットを選択する) や--no-merges
(マージコミットでは実際には変更が導入されない)、およびきれいな出力オプション ( )などに興味があるかもしれませ--pretty=oneline, short, medium, full...
ん。
git log からコミットごとの変更ではなく、全体の変更を取得するためのワンライナーを次に示します (必要に応じてコミット選択オプションを変更します。これは、commit1 から commit2 までの、あなたが行ったコミットです)。
git log --numstat --pretty="%H" --author="Your Name" commit1..commit2 | awk 'NF==3 {plus+=$1; minus+=$2} END {printf("+%d, -%d\n", plus, minus)}'
(git log にコミットに関する識別情報を出力させる必要があります。私はハッシュを任意に選択し、awk を使用して、統計情報を含む 3 つのフィールドを持つ行のみを選択しました)