おはようございます、YASUです。
これまでgit statusで「どのファイルが変わったか」を確認する練習を重ねてきましたが、疲れていた昨日、ふと「具体的にどこがどう変わったのか、ピンポイントで見る方法はないのか」と気になって調べたのがgit diffでした。地味ですが、実務では欠かせないコマンドだったので今日はその話です。
結論
git statusが「どのファイルが変わったか」を教えてくれるのに対し、git diffは「そのファイルの、どの行が具体的にどう変わったか」まで見せてくれます。コミット前の最終チェックに欠かせないコマンドでした。
まず、何か変更を加えてみる
echo "<p>新しい段落です</p>" >> index.html
練習用のindex.htmlに、1行追記してみました。
git diff を実行する
git diff
実行すると、こんな出力が出てきました。
diff --git a/index.html b/index.html
index 554f2dc..a275b90 100644
--- a/index.html
+++ b/index.html
@@ -1,3 +1,4 @@
<!-- test -->
<p>ログイン機能をここに実装予定</p>
<p>ここはトップページのデザイン変更予定地です</p>
+<p>新しい段落です</p>
出力の読み方
--- a/index.html/+++ b/index.html:aが変更前、bが変更後を表す@@ -1,3 +1,4 @@:変更前は1行目から3行、変更後は1行目から4行あるという、変更範囲の目印- 行頭がスペースの行:変更されていない、そのままの行
- 行頭が+の行:新しく追加された行
今回は最後の1行だけが+付きで表示され、「ここが追加されましたよ」と一目で分かるようになっていました。もし行を削除していた場合は、その行の頭に-が付いて表示されます。
git status との役割の違い
これまで使ってきたgit statusは、こんな感じで「変更されたファイルの名前」だけを教えてくれます。
Changes not staged for commit:
modified: index.html
これだけだと「index.htmlが変わった」ことは分かっても、具体的に何がどう変わったのかまでは分かりません。git diffを使って初めて、「どの行が増えて、どの行が減ったか」までピンポイントで確認できるようになります。
なぜこれが実務で大事なのか
コミットする前に、自分が今から記録しようとしている変更の中身を最終チェックする場面で、git diffは欠かせません。意図しない変更(デバッグ用に一時的に書いたコードの消し忘れなど)が紛れ込んでいないか、コミットする直前に一度目を通す習慣をつけておくと、余計な事故を防げます。以前のコンフリクト解消の時にも、結局は「どこが違うのか」を正確に把握することが第一歩でした。git diffは、まさにその確認作業を支えるコマンドです。
まとめ
git statusは「どのファイルが変わったか」を教えてくれるgit diffは「そのファイルの、どこが具体的にどう変わったか」を行単位で見せてくれる- 行頭の
+は追加、-は削除の印 - コミット前の最終チェックとして、実務でも頻繁に使われる
疲れていた日でも、1つだけ新しいコマンドに触れておくくらいのペースで、着実に引き出しが増えている実感があります。それでは、また明日!

コメント