[解決済み】Gitで2つのコミット間で変更された行数を計算するにはどうすればよいですか?
質問
Git で、二つのコミット間で変更された行数を簡単に計算する方法はありますか?
をすればいいのは知っています。
git diff
しかし、これは面倒なことです。また、自分のコミットだけを行数に含めるにはどうしたらいいのか知りたいです。
どのように解決するのですか?
を使用する必要があります。
--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 を使って三つのフィールドを持つ行だけを選び出しました。)
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] Git が追跡したファイルを .gitignore に登録したまま「忘れる」ようにするにはどうしたらいいですか?
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] ローカルの Git リポジトリが元々クローンされた URL を特定するにはどうすればよいですか。
-
[解決済み] git rebase の取り消し
-
[解決済み] Git リポジトリを特定のフォルダにクローンする方法は?
-
[解決済み] 2つのリビジョン間でどのファイルが変更されたかを表示する
-
[解決済み】Git リポジトリに空のディレクトリを追加するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 現在のブランチのトラッキング情報がありません。
-
[解決済み] masterブランチと'origin/master'が分岐している、'undiverge'ブランチの方法は?
-
[解決済み】Git:コミットに何も追加されていないが、未追跡のファイルが存在する
-
[解決済み】マージ後のコミットでGitエラー - fatal: マージ中に部分コミットができない
-
[解決済み】ERROR: Error cloning remote repo 'origin'.
-
[解決済み】ローカルに変更があるにもかかわらず、git pushが「すべて最新」と言う
-
[解決済み] git でディレクトリ階層が異なる 2 つのブランチをマージするには?
-
[解決済み] GitのFETCH_HEADとはどういう意味ですか?
-
[解決済み] Gitのプッシュエラーです。Unable to unlink old (Permission denied)です。
-
[解決済み] Gitのcommit-ishとtree-ishとは何ですか?