...では、2つのコマンドの違いは何ですか?なぜわざわざ両方を持っているのですか?
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
(それは避けます この質問 )
最も単純な形式では、「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形式の変更を示します。
私は完全には同意しません。変更されたファイルをlog
でマージできますか?
この機能は見つかりませんでした。ファイルがブランチでマージされた時期を知るのに非常に役立ちます。例:
_file c.c
_にマージする場合、_branch1
_の_branch2
_のコミット日は2012年1月1日であり、後でそのコミットが_branch2
_、_git log
_は役に立ちますか?マージがある場合は、_git whatchanged -m sha1
_で検索できます。