現在の状態と最後のコミットの差分を参照してください


92

コミットしようとすると、最後のコミット以降に何が変わったかを正確に思い出せないことがあります。コードの現在の状態と最後のコミットの差分を確認するにはどうすればよいですか?

回答:


113

まだ(を使用してgit add)インデックスにファイルを追加していない場合は、単に追加してください。

git diff

これにより、作業ツリーとインデックスの違いが表示されます。

インデックスにファイルを追加した場合は、インデックスと最後のコミット(HEAD)の違いを表示するためにこれを行う必要があります。

git diff --cached

最後に、最新のコミット(HEAD)と比較して作業ツリーで行われた変更を確認したい場合は、(Carlosが指摘しているように)実行できます。

git diff HEAD

これらの変更は、の組み合わせであるgit diffgit diff --cached


2
git diffワークツリーをHEADではなくインデックスと比較します。
カルロス・マルティン・ニエト

@CarlosMartínNietoあなたは正しいです、サー。これを反映するために投稿を改善しました。
Klas Mellbourn 2013年

それを実行しましたが、ターミナルが終了しません。どうすれば終了できますか。何も機能しません。
フランシスココラレスモラレス2014年

@ KlasMellbourn、git diff1つのdiffメッセージでインデックスの状態と前のコミットを行うことは可能ですか?
alpha_9 8918年

2
そのことをよく理解しましたgit diff --cached HEAD^:)
alpha_9 8918年

33

コミットを行ったばかりの場合、または現在の状態と比較して最後のコミットで何が変更されたかを確認したい場合(クリーンな作業ツリーがあると仮定)、次を使用できます。

git diff HEAD^

これにより、HEADと直前のコミットが比較されます。1つもすることができます

git diff HEAD^^

2コミット前のプレイの状態と比較します。現在の状態と特定のコミットの違いを確認するには、次のようにします。

git diff b6af6qc

b6af6qcコミットハッシュの例はどこにありますか。


3
gitのWindowscmdバージョンの注意事項-キャレット自体でキャレット(^)文字をエスケープする必要があります。したがって、「git diffHEAD ^」は「gitdiffHEAD ^^」になります。同様に、「HEAD ^^」は「HEAD ^^^^」として入力します。
Eellor 2018

1
この回答では、「最後のコミット」が何を指しているのかが少し不明確だと思います。最新HEAD^のコミットののコミットです。
KlasMellbourn19年

3

gitに、現在/最後のコミットを比較するように依頼しますHEAD。これは、の省略形です。

したがってgit diff HEAD、ワークツリーの現在の状態を現在のコミットと比較します。


3

これは、違いとどのファイルが変更/変更されたかも示します。

$ git status 

インデックスファイルと現在のHEADコミットが異なるパス、作業ツリーとインデックスファイルが異なるパス、およびgitによって追跡されない(およびgitignore(5)によって無視されない)作業ツリー内のパスを表示します。 )。1つ目は、gitcommitを実行してコミットするものです。2番目と3番目は、gitcommitを実行する前にgitaddを実行することでコミットできるものです。

https://www.kernel.org/pub/software/scm/git/docs/git-status.html


2

これは私にも役立ちます:

# The last one
git diff HEAD~1 HEAD

# The last but one, etc...
git diff HEAD~2 HEAD~1

これは通常、線形履歴に対して機能します。マージコミットもある場合、これはよりトリッキーになる可能性があります。このドキュメントを調べて、わかりやすく完全な説明を確認することをお勧めします。特に、コミットツリーの図の例を参照してください。

https://git-scm.com/docs/gitrevisions

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.