Git を使っていると、特定の差分だけを他人に渡したり、別のブランチやプロジェクトに適用したくなる場面があります。
そのときに便利なのが git diff
+ git apply
を使ったパッチファイルの活用です。
🔧 パッチファイルとは?
Git で生成した 差分ファイル(diff) を .patch
や .diff
として保存したものです。
このファイルを別の環境で適用することで、変更をそっくりそのまま再現できます。
✅ パッチファイルの作成方法
1. ステージされていない差分を出力する
git diff > feature.patch
※ git add
されていないワークツリー上の変更が含まれます。
2. ステージ済みの変更を出力する
git diff --cached > feature.patch
3. 特定のコミットをパッチにする(1つだけ)
git format-patch -1 <コミットハッシュ>
✅ パッチファイルの適用方法
1. git apply
でパッチを適用する
git apply feature.patch
デフォルトでは 作業ツリーに変更を加えるだけで、コミットはされません。
2. パッチ適用前にテスト(dry-run)
git apply --check feature.patch
3. patch コマンドでも適用可能
patch -p1 < feature.patch
🎯 よく使うオプション
コマンド | 説明 |
---|---|
git diff --name-only |
差分ファイル名だけ一覧 |
git diff HEAD |
HEADとの差分 |
git apply --reject |
適用できなかった部分を .rej に保存 |
git apply --3way |
コンフリクト時に3-wayマージを試みる |
💡 チームでの使い方例
- レビュー中の差分だけを送る(本体に影響させたくないとき)
- 本番環境に一部だけ適用したい
- ネットワークが不安定な環境で差分だけ手渡す
- 大規模リポジトリでcloneせず差分だけ受け取る
⚠️ 注意点
-
.patch
を適用する先に 同じファイル・行が存在しないとエラーになります。 - パッチ作成元と適用先でディレクトリ構造が大きく違うと適用に失敗します。
📝 まとめ
操作 | コマンド |
---|---|
差分出力(未ステージ) | git diff > xxx.patch |
差分出力(ステージ済) | git diff --cached > xxx.patch |
適用 | git apply xxx.patch |
テスト適用 | git apply --check xxx.patch |
パッチは 手軽かつ強力な共有手段です。チーム開発で柔軟に使いこなしましょう!