Git で 2 つのコミット間で変更された行数を計算するにはどうすればよいですか? 質問する

Git で 2 つのコミット間で変更された行数を計算するにはどうすればよいですか? 質問する

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またはも使用できます--shortstatgit 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 つのフィールドを持つ行のみを選択しました)

おすすめ記事