HOWTO · Git

Git でコミットされていない変更の差分の詳細を表示する

Git でコミットされていない作業の差分の詳細を表示するさまざまな方法。

このページの内容

この記事では、Git でコミットされていない作業の diff 詳細を取得する方法について概説します。 git diff コマンドを使用して、さまざまな Git 参照 (コミット、インデックス、作業ツリーなど) の違いを表示します。

以下で説明するように、コマンドを使用して、コミットされていない作業の詳細を表示できます。

Git でコミットされていない変更の差分の詳細を表示する

コンテキストを簡単にするために、例を使用します。 下の画像が、リポジトリ内の作業ディレクトリの現在の状態を表しているとしましょう。

作業ディレクトリ

上記の両方のファイルは、コミットされていない作業のカテゴリに分類されます。 ただし、git diff コマンドは、ステージングされたファイルとステージングされていないファイルに対して同じようには機能しません。

より明確な図として、パラメーターなしの基本的な git diff から始めましょう。

$ git diff

出力:

git diff no param

パラメーターなしの git diff コマンドは、ステージングされていないファイルの変更のみを表示することに気付くでしょう。 Git のドキュメントによると、パラメーターを指定せずに git diff コマンドを実行すると、インデックスに関連する変更が表示されます。

これらの変更はインデックスに反映されるはずですが、まだ追加されていません。

ステージングされたファイルの diff の詳細を表示するにはどうすればよいですか?

ステージングされたファイルの変更を表示するには、以下に示すように git diff コマンドを使用します。

$ git diff --cached

結果:

git diff –cached

git diff コマンドに --cached フラグを追加すると、ステージングされたファイルの diff の詳細が表示されることがわかります。 その通り、Git のドキュメントには、git diff --cached は現在のコミット (HEAD) に関連するステージングされた変更を表示すると記載されています。

コマンドを個別に実行したくない場合はどうすればよいでしょうか?

ステージングされた変更とステージングされていない変更の両方の diff の詳細を表示するには、以下に示すように git diff コマンドを実行します。

$ git diff HEAD

結果:

git diff HEAD

git diff HEAD コマンドは、作業ディレクトリと現在のコミットの間の diff の詳細を表示します。

ボーナスヒント

上記の diff の詳細を読むのが難しい場合は、Meld などのサードパーティの difftool を使用できます。

簡単に言えば、git diff コマンドを操作して、ファイルのカテゴリに応じて、コミットされていない作業の diff の詳細を表示できます。 Git でステージングされたファイルとステージングされていないファイルの diff の詳細を表示する方法を見てきました。