2012-03-29 9 views
42

「gitのdiffを--stat」と「gitのログ--stat」のようなものを示しています。git show行を追加したり、行を変更したり、行を削除したりする方法はありますか?

$ git diff -C --stat HEAD c9af3e6136e8aec1f79368c2a6164e56bf7a7e07 
app/controllers/application_controller.rb | 34 +++------------------------- 
1 files changed, 4 insertions(+), 30 deletions(-) 

をしかし、何が本当にそのコミットで起こったこととは異なっている4行が変更されたと26行が削除されたということでした4行追加して30を削除する

デルタLOC(この場合は26)を取得する方法はありますか?私は実際に追加または削除された行を区別することに本当に気をつけません。

答えて

45

あなたは使用することができます。

git diff --numstat 

を数値差分情報を取得します。

追加と削除のペアから変更を分離する限り、--word-diffが役に立ちます。

これはちょっと長時間ですので、代わりに独自のスクリプトで解析することをおすすめします。

+0

を使用することができ 、各によって削除/コミット変更追加したおかげでquornianしかしnumstat STAT、追加および削除とまったく同じ情報を提供します。 –

+0

私の答えは、 '--word-diff'の使用例を含めるように更新されました。それはより有用かもしれません。 – quornian

+0

ありがとう!あなたの編集された答えは素晴らしいです。私は、2つの特定のコミットの間にいくつの行が追加/変更/削除されたのかを見たいと思っていました。 'git diff commit1 commit2 --word-diff ...'ここで、commit1/2はSHA1、ブランチ、タグなどです。以下のように、ブランチ名をコマンドに入れてください。 。 –

1

gitはdiff形式として、行の追加と削除のみを行った「統一された」diffを使用します。あなたは情報を追加、削除、変更することを示す差分を得るために何か外部をしなければなりません。それから、あなたが"context" diff出力を生成することができます -

https://wiki.postgresql.org/wiki/Working_with_Git#Context_diffs_with_Gitは、通常の古い「差分」を実行することができますスクリプトへのリンクを提供します。 Context diffは、追加、削除、変更された行を表示します。これにより、必要なデータを取得できます。

13
  1. あなたはラインを知りたい場合は追加/変更/によって削除 ID commit-idで、あなたはあなたにWAT場合

    git show commit-id --stat 
    

    または

    git diff commit-id-before commit-id --stat 
    
  2. を使用することができますコミット範囲で追加/変更/削除された行を知る コミットを使用することができます

    あなたがラインを知りたい場合は
    git diff commit-id1 commit-id2 --stat 
    
  3. は/あなたが

    git log --stat 
    
関連する問題