Git Diff
最終更新
git diff は、リポジトリの2つの状態間の正確な行単位の変更を表示します。引数なしでは、変更したがまだステージしていない内容を表示します。ステージ済みの内容を見るには --staged を追加し、比較するには2つのコミットやブランチを指定し、絞り込むにはファイルを指定します。
これらをターミナルプレイグラウンドで試してみましょう - ブラウザ内の本物のシェルで、インストール不要です。
構文
| Command | What it does |
|---|---|
git diff | ステージされていない変更とインデックスの比較 |
git diff --staged | ステージされた変更と直前のコミットの比較 |
git diff HEAD | 直前のコミット以降のすべての変更 |
git diff main feature | 2つのブランチ間の差分 |
git diff <hash1> <hash2> | 2つのコミット間の差分 |
git diff -- file.txt | 単一ファイルの変更 |
よくあるケース
| Goal | Command |
|---|---|
| これからコミットする内容を確認する | git diff --staged |
| 未コミットの作業を確認する | git diff |
| 自分のブランチを main と比較する | git diff main |
| 変更されたファイル名だけを確認する | git diff --name-only |
Git diff のよくある質問
git diff はデフォルトで何を表示しますか?
引数なしの場合、
git diff はワーキングツリー内のまだステージされていない変更を表示します - 直前の git add 以降に編集した内容です。すでにステージした内容(次にコミットされる内容)を見るには git diff --staged を、直前のコミット以降のすべてを見るには git diff HEAD を使います。git diff と git diff --staged の違いは何ですか?
git diff はワーキングツリーとステージングエリアを比較します(ステージされていない変更)。git diff --staged(--cached も同じ)はステージングエリアと直前のコミットを比較します(ステージされた変更)。この2つを合わせると、未コミットの作業の両方の側面が見えます。2つのブランチやコミットの diff を取るにはどうしますか?
それらを指定します:
git diff main feature は2つのブランチ間の違いを表示し、git diff <hash1> <hash2> は2つのコミットを比較します。比較を1つのファイルに限定するには、末尾に -- <file> を追加します。完全な diff ではなく、どのファイルが変更されたかだけを見るには?
ファイル名だけなら
git diff --name-only、各ファイルと変更された行数を示す要約なら git diff --stat を使います。行単位の完全な diff を読む前に素早く概要を把握するのに便利です。これをオンラインで練習できますか?
はい。ターミナルプレイグラウンドを開けば、ブラウザ内の本物のシェルで
git diff を実行できます - インストール不要です。Coddy の無料のインタラクティブな Git コースでも、変更の確認方法を段階的に扱っています。