【ツール活用|実務向け】【Git運用術】コミット前の必須習慣!git diff –staged で事故を防ぐ

導入

皆さんは、コミットした後に「あ、デバッグ用のprint文を消し忘れた」「意図しない変更までステージングしてしまった」と冷や汗をかいた経験はありませんか?Gitにおける `git diff –staged` は、まさにそのミスを未然に防ぐための「最後の砦」です。本記事では、このコマンドを日常のワークフローに組み込み、開発の品質を一段階引き上げる方法を解説します。

基礎知識

Gitのライフサイクルにおいて、ファイルは「ワーキングディレクトリ(編集中の状態)」「ステージング領域(インデックス)」「リポジトリ(コミット済み)」という3つの状態を行き来します。
通常、`git diff` を単体で実行すると、ワーキングディレクトリとステージング領域の差分が表示されます。しかし、`git diff –staged`(または `–cached`)を使うと、「ステージング領域にある変更内容」と「最新のコミット(HEAD)」の差分が表示されます。つまり、「今からコミットしようとしている変更内容そのもの」をピンポイントで確認できるのです。

実装/解決策

実務では、`git add` を行った直後に、コミットを実行する前に必ずこのコマンドを叩く習慣をつけます。特に、複数のファイルを一括で `git add .` した際には、意図しないファイルが含まれていないかを視覚的に確認できるため、コミットログの汚染を防ぐことができます。

サンプルプログラム

以下のコマンド群は、典型的な開発フローをシミュレートしたものです。ターミナルで実行して動作を確認してみてください。


1. 修正したファイルをステージングに追加
git add src/main.py

2. 【重要】コミット前に何がステージングされたかを確認する
以下のコマンドで、次回のコミットに含まれる差分だけが表示されます
git diff –staged

3. 差分を確認して問題なければコミットを実行
もし不要なコードがあれば、git restore –staged <ファイル名> で取り消す
git commit -m “機能追加: メイン処理のロジックを修正”

応用・注意点

現場での運用において、さらに効率を高めるためのTipsをいくつか紹介します。

1. エイリアスの活用
毎回 `–staged` と打ち込むのが面倒な場合は、Gitのエイリアスを設定しましょう。
`git config –global alias.ds ‘diff –staged’` と設定しておけば、以降は `git ds` だけで確認可能です。

2. 色設定の確認
差分が見づらい場合は、`git config –global color.ui auto` を有効にしてください。赤(削除)と緑(追加)が明確に表示され、視認性が向上します。

3. 陥りやすい罠:改行コード
環境(Windows/macOS/Linux)が混在するプロジェクトでは、改行コードの変換設定により、実際には変更していないのに差分として大量に表示されることがあります。`git diff –staged –ignore-space-at-eol` オプションを併用することで、純粋なロジックの変更点に集中しやすくなります。

「急いでいる時ほど確認を怠らない」。この小さな習慣が、コードレビューの質を高め、チーム開発の信頼を築く鍵となります。ぜひ今日からの開発フローに取り入れてみてください。

コメント

タイトルとURLをコピーしました