トラブルシューティング
git diff で差分が表示されない
git diff を実行しても何も表示されない場合の原因と対処法
よくある原因: ステージ済みの変更
git diff は「ワーキングディレクトリ」と「ステージングエリア」の差分を表示します。
git add で変更をステージした後は、ワーキングディレクトリとステージングエリアが一致するため、git diff は何も表示しません。
ステージ済みの変更を確認するには --staged オプションが必要です。
git diff と git diff --staged の使い分け
bash
# 未ステージの変更を表示
git diff
# ステージ済みの変更を表示
git diff --staged
# HEAD との差分をすべて表示
git diff HEAD新規ファイルが表示されない場合
git diff は追跡対象(tracked)のファイルのみを比較します。
新規作成して一度も add していないファイル(untracked)は diff に表示されません。
新規ファイルを含めるには、先に git add してから git diff --staged で確認するか、git status で未追跡ファイルを確認します。
bash
# 新規ファイルの確認
git status
# 新規ファイルをステージしてから差分確認
git add newfile.txt
git diff --staged状況別の早見表
まず
git statusで現在の状態を確認ファイルがどのセクションに並んでいるかを見れば、どの diff コマンドを使えば良いか判断できます。
「Changes to be committed」にある
ステージ済みです。
git diff --stagedで差分を確認します。「Changes not staged」にある
未ステージです。
git diffで差分が見えます。「Untracked files」にある
まだ Git の追跡対象ではありません。
git addしてからgit diff --stagedで確認するか、エディタで直接中身を見ます。
bash
# まずは状態確認
git status
# 状態に応じたコマンド
git diff # "Changes not staged" の内容
git diff --staged # "Changes to be committed" の内容
git diff HEAD # 両方まとめて確認
Git Ready