Gitを使ったチーム開発では、「どのファイルが変更されたのか」をすばやく把握することが重要です。この記事では、git diff
コマンドを使って、前回の git pull
以降に追加・更新・削除されたファイルの一覧を確認する方法を、実行例付きでわかりやすく紹介します。
Git diffでできること
git diff
は、任意の2つの状態間の**差分(diff)**を表示するGitの基本コマンドです。
特に以下の用途で便利です:
- リモートとローカルの差分を確認
- リモートで追加されたファイルを把握
- ローカルでの変更を確認
- ファイルの更新・追加・削除を一覧で取得
基本の構文
git diff --name-status <比較元> <比較先>
--name-status
:ファイルの変更ステータス(A, M, D)を表示<比較元> <比較先>
:差分を比較する2つのブランチやコミットID
よく使う差分比較パターン
① ローカルとリモートの差分すべて
git fetch origin
git diff --name-status origin/develop
リモートブランチ(origin/develop)と現在のローカルブランチとの差分を一覧で確認できます。ローカルとリモートの両方の変更が混在します。
② リモートで更新されたファイルを確認(pull前)
git fetch origin
git diff --name-status HEAD..origin/develop
これは、リモートにしか存在しない変更(まだローカルに取り込んでいない変更)を一覧で確認したい場合に使います。
③ ローカルで更新されたファイルを確認(push前)
git fetch origin
git diff --name-status origin/develop..HEAD
これは、ローカルで行った変更(まだリモートに反映されていないファイル)を表示します。
出力例(差分ファイル一覧)
以下は git diff --name-status HEAD..origin/develop
を実行した結果のサンプルです:
M src/utils/helper.php
A src/components/NewComponent.vue
D src/legacy/old_script.js
記号 | 意味 |
---|---|
M | Modified(変更) |
A | Added(追加) |
D | Deleted(削除) |
このように、どのファイルがどう変更されたのかが一目でわかります。
ファイル名だけを見たい場合
変更ステータスはいらず、ファイル名のみを一覧で取得したい場合は以下:
git diff --name-only HEAD..origin/develop
補足:前回pullの状態を記録しておく方法
pullのたびに現在の状態を記録しておくことで、後から差分を確認するのが容易になります。
git rev-parse HEAD > .last_pull_commit
次回、記録時点からの差分を確認:
git diff --name-status $(cat .last_pull_commit)..HEAD
まとめ
目的 | コマンド |
---|---|
ローカルとリモートの差分を確認 | git diff --name-status origin/develop |
リモートの変更を確認(pull前) | git diff --name-status HEAD..origin/develop |
ローカルの変更を確認(push前) | git diff --name-status origin/develop..HEAD |
開発の手戻りを防ぐためにも、pullやpushの前に git diff
を使って差分確認を行う習慣をつけましょう。
コメント