Gitを使う上で、変更内容の確認は非常に重要な作業です。特にgit diff
コマンドは、開発作業で頻繁に使用する基本的なコマンドの1つです。
この記事では、実践的なシーンに応じたgit diff
の使い方と、作業効率を上げる便利なオプションを紹介します。
git diffの基本的な使い方
作業ディレクトリの変更を確認する
git diff
これは最も基本的な使い方で、まだステージングエリアに追加されていない(git add
する前の)変更内容を確認できます。
ステージング済みの変更を確認する
git diff --staged # または --cached
git add
した後の変更内容を確認する際に使用します。
リモートとの比較
pull前の変更確認
git diff HEAD..origin/main
リモートリポジトリから変更を取り込む前に、どのような変更があるか確認できます。
push前の変更確認
git diff origin/main..HEAD
ローカルの変更をプッシュする前に、リモートとの差分を確認できます。
高度な使用方法
コミット間の比較
# 直前のコミットとの比較
git diff HEAD^
# 特定のコミット同士の比較
git diff <commit-hash-1>..<commit-hash-2>
ブランチ間の比較
git diff branch1..branch2
便利なオプション集
統計情報の表示
git diff --stat
変更されたファイルの一覧と、それぞれの変更量を視覚的に確認できます。
変更ファイル名のみ表示
git diff --name-only
変更があったファイルのパスのみを表示します。スクリプトでの利用に便利です。
より見やすい差分表示
# 単語単位での差分表示
git diff --color-words
# 空白の変更を無視
git diff -w
# 空行の変更を無視
git diff --ignore-blank-lines
特殊なファイルの比較
Excelファイルの比較
Excelファイルの内容も比較できるように設定できます。
ツールのインストール
# Macの場合
brew tap shibukk/git-xlsx-textconv
brew install git-xlsx-textconv
設定ファイルの追加
# .git/config
[diff "xlsx"] # セクション開始。xlsxという名前のdiffハンドラーを定義
binary = true # Excelファイルがバイナリファイルであることを指定
textconv = git-xlsx-textconv # 差分を見る際に使用するコンバーターを指定
# .git/info/attributes
*.xlsx diff=xlsx
*.XLSX diff=xlsx
圧縮されたJavaScriptファイルの比較
# .git/info/attributes
*.min.js diff=minjs
*.json diff=minjs
便利な設定
より直感的な差分表示。
以下の設定で差分の表示方法を改善できます。
git config --global diff.compactionHeuristic true
Tips
- 特定のファイルのみ比較
git diff -- path/to/file
- 表示行数の調整
git diff -U5 # 前後5行を表示
- 複数のブランチにまたがる特定ファイルの比較
git diff branch1..branch2 -- path/to/file
まとめ
git diff
は非常に柔軟で強力なコマンドです。基本的な使い方を押さえた上で、必要に応じて適切なオプションを組み合わせることで、より効率的な開発作業が可能になります。
特に覚えておくと便利なのは、
- 基本の
git diff
とgit diff --staged
- リモートとの比較用の
git diff HEAD..origin/branch
- 見やすさを改善する
--color-words
オプション - 統計情報を表示する
--stat
オプション
これらのコマンドを日々の開発作業に組み込むことで、コードの変更管理がより確実になり、作業効率も向上するでしょう。
以下のリンクでは、Git及びGitHubに関する記事をまとめています。Gitの基本操作やブランチ管理、GitHubでのリポジトリ管理、共同作業のコツなど。気になるトピックをクリックして、詳しい情報を確認してください。
- Gitの差分確認コマンドを徹底解説 – origin/mainとHEADの違いを理解する
- git diffコマンドの実践的な使い方と便利なオプション
- git push -u origin main
- ローカルでコミットしたものを取り消す方法
- 【GitHub】ディレクトリの移動及びディレクトリの名前変更(質疑応答)
- git branch -M mainの意味
- 【Git】ステージング(staging)とは?
- .gitignore ファイルの使用について
- git config –list コマンド
- git commit -m “コミットメッセージ”
- GitHubアップロード完全ガイド:初心者でも簡単にできる方法
- GitHubのPagesで始める無料ウェブサイトを公開する設定手順
- Gitブランチ確認:現在のブランチを知る5つの方法
- GitHubのディレクトリ管理:効率的なプロジェクト構造の作り方
- GitHubのファイル管理基本:効率的な操作方法
- GitHubリポジトリの作成と設定:初心者向けガイド