web-dev-qa-db-ja.com

git-logとgit-whatchangedの違いは?

  1. 与えられた この答え 別の質問に、そして
  2. git-loggit-whatchanged の両方のマニュアルページが git-rev-list ..からプルすると言っていると仮定します。

...では、2つのコマンドの違いは何ですか?なぜわざわざ両方を持っているのですか?

30
Alexander Bird

commit 52f425e1 (2013年8月30日)は次のように述べています。

新しいユーザーに代わりに「log」を使用するように勧めます。最近では、これらのコマンドは統合されており、デフォルトが異なります

'git log'は、2005年6月上旬に追加されたときにのみログメッセージを表示でき、差分は表示できませんでした。コマンドが差分オプションの取得を学習したのは2006年4月上旬のみでした。
このため、パワーユーザーは2005年5月中旬からすでに存在しdiffオプションをサポートしている「whatchanged」を使用する傾向がありました。


それが git whatchangedのmanページの新しいバージョン が今言うことです:

新規ユーザーは、代わりに git log を使用することをお勧めします。 whatchangedコマンドは基本的に git log と同じですが、デフォルトでは生の形式の差分出力を表示し、マージをスキップします。

コマンドは主に歴史的な理由で保持されます。 Linuxカーネルメーリングリストを読んでgit logが発明されるずっと前にGitを学んだ多くの人々の指は、それを入力するように訓練されています

torekcomments であるため、git logに相当するものは次のようになります。

git log --raw --no-merges

(それは避けます この質問

25
VonC

最も単純な形式では、「git log」は各コミット(sha、author、date、message)を示し、「gitwhatchanged」はコミットと変更されたファイルを示します。例えば:

$ git log
commit db9f525674443314a9822a6bd6c3acce49c8f8d6
Author: ...
Date:   Wed Apr 4 22:55:33 2012 -0700

Add more

commit eed0b7aa3cad5d985b5f1d52f3c0605339c119a1
Author: ...
Date:   Tue Apr 3 20:36:04 2012 -0700

del bing/one.c

しかし、何が変わったのか:

$ git whatchanged
commit db9f525674443314a9822a6bd6c3acce49c8f8d6
Author: ...
Date:   Wed Apr 4 22:55:33 2012 -0700

Add more

:100644 100644 f2e4113... d415016... M  bar.c

commit eed0b7aa3cad5d985b5f1d52f3c0605339c119a1
Author: ...
Date:   Tue Apr 3 20:36:04 2012 -0700

del bing/one.c

:100644 000000 e69de29... 0000000... D  bing/one.c

各コマンドの出力を変更するためのオプションはたくさんあります。たとえば、「git whatchanged -p」は、diff/patch形式の変更を示します。

13
GoZoner

私は完全には同意しません。変更されたファイルをlogでマージできますか?

この機能は見つかりませんでした。ファイルがブランチでマージされた時期を知るのに非常に役立ちます。例:

_file c.c_にマージする場合、_branch1_の_branch2_のコミット日は2012年1月1日であり、後でそのコミットが_branch2_、_git log_は役に立ちますか?マージがある場合は、_git whatchanged -m sha1_で検索できます。

3
bernardo