こんにちは、かつコーチです。
前回の記事でgit addとgit commitの基本を解説しました。
今回は、コミットする前に必ず確認しておきたいgit statusとgit diffの使い方を解説します。
この2つのコマンドを使いこなせるようになると、「意図しない変更を間違ってコミットしてしまう」という事故を大きく減らせます。
git status・git diffとは?
書きかけの原稿の校正記号
git statusとgit diffは、どちらもリポジトリの「今の状態」を確認するためのコマンドです。
イメージとしては、書きかけの原稿に入れる校正記号を思い浮かべてください。
編集者が原稿をチェックするとき、「どのページに手が入っているか」を一覧で把握し(git statusの役割)、さらに「具体的にどの文章がどう変わったか」を1文字単位で確認します(git diffの役割)。
この2段階の確認を経てから、原稿は次の工程(コミット)に進みます。
何のために使うのか
前回の記事で「コミット前にgit statusで確認する習慣をつけましょう」と紹介しましたが、その理由は、確認をしないままコミットすると、意図しない変更まで一緒に記録してしまうリスクがあるためです。
git statusとgit diffは、まさにこの「意図しない変更」に気づくためのセーフティネットの役割を果たします。
基本の使い方
git statusで変更状況を確認する
git statusを実行すると、リポジトリ内のファイルが今どんな状態にあるかが一覧表示されます。
git status
出力例は以下のようになります。
On branch main
Changes not staged for commit:
modified: index.html
Untracked files:
new-file.txt
modified(変更あり・未ステージング)とUntracked files(Gitの管理対象外の新規ファイル)の違いを見分けられるようになると、状況判断がぐっとスムーズになります。
git diffで具体的な差分を確認する
git statusが「どのファイルが変わったか」を教えてくれるのに対し、git diffは「具体的に何行目がどう変わったか」を確認できます。
git diff
出力例です。
- <h1>Welcome</h1>
+ <h1>Welcome to My Site</h1>
-(赤字で表示されることが多い)が削除された行、+(緑字)が追加された行を表します。
ステージング済み(git add済み)の変更を確認したい場合は、--stagedオプションを付けます。
git diff --staged
よくあるつまずきポイント
Before/After:確認せずコミットして事故になったケース
以前、複数のファイルをまとめて編集していた際、デバッグ用に一時的に追加していたconsole.log(動作確認用のログ出力)を消し忘れたまま、git statusもgit diffも見ずにコミットしてしまったことがあります。
後日、本番環境で不要なログが出力されていることに気づき、慌てて修正コミットを追加する羽目になりました。
❌ Before:変更したファイルをすぐにgit add・git commitする
✅ After:コミット前に必ずgit diffで差分を1行ずつ目視確認する
# コミット前の確認ルーティン
git status
git diff
git add .
git commit -m "コメント機能を追加"
このひと手間を習慣にしておくだけで、デバッグコードの消し忘れや、意図しない変更の混入をかなり防げます。
応用・一歩先の使い方
ファイル単位でdiffを絞り込む
変更ファイルが多いときは、確認したいファイルを指定してdiffを見ることもできます。
git diff index.html
git add -pとの合わせ技
前回紹介したgit add -p(部分的ステージング)と組み合わせると、git diffで確認した変更のうち「この部分だけをコミットしたい」という調整も可能になります。
コミット前の確認と部分的なステージングをセットで覚えておくと、より丁寧なコミット履歴を作れるようになります。
まとめ
この記事のポイント
git statusは変更したファイルの一覧を、git diffは具体的な差分を確認するコマンド-は削除された行、+は追加された行を表す- コミット前に「status→diff→add→commit」の流れを習慣にすると事故を防げる
次に読むべき記事
- git logでコミット履歴を確認する
- .gitignoreの書き方:管理しないファイルを指定する
タグ: Git, 初心者向け, 基本操作