2013-08-08 25 views
20

のgit-diffのマニュアルページには、インデックスとツリー、2つのツリー、または変化と変化の間 を変更し、Gitのdiffは作業ツリーとインデックスやツリーの間gitコミットと作業ディレクトリの違いは?

表示の変更に使用されていることを述べていますディスク上の2つのファイルの間の 。

しかし、HEAD以前のコミットと作業ディレクトリの違いを表示したいのですが?それは可能ですか?

答えて

27

はい、ただし、現在のプロジェクトの状態が何であるかは、定義によって少し異なります。 git diffのマニュアルが続きます。

git diff [--options] --cached [<commit>] [--] [<path>...] 

このフォームは名前の<commit>に対するコミット次回のために段階的な変化を表示することです:

あなたはとの比較に興味があるなら

変更を上演しました。通常、最新のコミットと比較したいので、 <commit>を指定しないと、デフォルトはHEADになります。 HEADが存在しない場合(例:未成年ブランチ)、 <commit>が指定されていない場合は、すべての段階的な変更が表示されます。 --staged--cachedという同義語です。あなたは unstaged変化との比較に興味がある場合は

git diff [--options] <commit> [--] [<path>...] 

このフォームでは、名前の<commit>に作業ツリーに相対していた変更を表示することです。 HEADを使用して最新のコミットと比較したり、別のブランチの先端と比較するブランチ名を比較することができます。

それとも、任意の 2コミットを比較する上で、単に興味を持っている場合(1の可能性HEADは):

git diff [--options] <commit> <commit> [--] [<path>...] 

これは、任意の二つの<commit> sの間で変更を表示することです。

ですから、someOldCommitと、現在のHEADとの違いを見るためにgit diff someOldCommit HEADを実行したい場合があります。

+1

「現在のプロジェクトの状態」では作業ディレクトリを参照していましたが、少し拡散していました。私は私の質問を更新しました。 – HelloGoodbye

+2

答えをありがとう。ですから、 'git diff [--options] [ - ] [ ...]'が私が探していたものでした。私の場合は、オプションを使用する必要はないので、現在のパス内で相違点を取得する必要があります。これは 'git diff 'になります。 – HelloGoodbye

+1

または、私は全体をリポジトリであり、トップレベルディレクトリにあるとは限りません。 'git diff 'が必要です。スクリプトからこれは 'git diff " $(git rev-parse --show-toplevel) "'となります。 – HelloGoodbye

関連する問題