Gitで差分だけを共有したい!git diffとpatchファイルの使い方
こんにちは、とまだです。
みなさん、開発していて「この修正だけ先に見てもらいたい」と思ったことはありませんか?
実は、Gitには特定の変更だけを取り出して共有できる便利な機能があります。
それが、今回紹介する git diff と patchファイル です。
patchファイルとは?身近なものに例えてみる
patchファイルは、簡単に言うと「変更内容だけを記録したメモ」のようなものです。
ファイル全体ではなく、変更した部分だけを記録します。
だから、ファイルサイズも小さく、共有も簡単なんです。
なぜpatchファイルが必要なの?
開発現場では、こんな場面によく遭遇します。
レビューをお願いしたいとき
全体の開発はまだ途中だけど、一部のバグ修正だけ先に確認してもらいたい。
そんなときにpatchファイルが役立ちます。
別の環境で同じ修正を適用したいとき
自分のPCで修正した内容を、別のPCでも同じように反映したい。
コミットするほどでもない小さな修正なら、patchファイルが便利です。
ブランチを使いにくい状況のとき
クライアントに一時的な修正を確認してもらう場合など、リポジトリ全体を共有できない状況もあります。
そんなときも、patchファイルなら気軽に送れます。
基本的な使い方を見てみよう
まずは差分を確認
開発中のファイルの変更を確認するには、以下のコマンドを使います。
git diff
これで現在の変更内容が表示されます。
でも、これだと画面に表示されるだけですよね。
patchファイルとして保存する
差分をファイルとして保存するには、以下のようにします。
git diff > changes.patch
たったこれだけで、変更内容が changes.patch
というファイルに保存されます。
このファイルを誰かに送れば、同じ変更を適用してもらえるわけです。
特定のコミット間の差分を取り出す
すでにコミットした内容の差分を取り出したい場合は、コミットIDを指定します。
git diff HEAD^ HEAD > latest-change.patch
HEAD^
は一つ前のコミット、HEAD
は最新のコミットを表します。
つまり、最新のコミットで行った変更だけを取り出せるんです。
patchファイルを受け取ったらどうする?
変更を適用する基本コマンド
受け取ったpatchファイルを適用するのも簡単です。
git apply changes.patch
これだけで、patchファイルに記録された変更が反映されます。
まるで、修正指示のメモを見ながら手直しするような感覚ですね。
うまくいかないときは?
時々、patchの適用がうまくいかないことがあります。
主な原因は以下の通りです。
すでに一部が修正されている場合
同じ箇所がすでに変更されていると、コンフリクトが発生します。
この場合は、手動で調整が必要です。
改行コードの違い
WindowsとMac/Linuxで改行コードが異なることが原因の場合があります。
以下のオプションを使うと解決することが多いです。
git apply --ignore-whitespace changes.patch
実践的な使用例
バグ修正を先行して共有する
開発中にバグを見つけて修正したとします。
でも、機能開発はまだ途中。
そんなときは、バグ修正だけをpatchファイルにして共有できます。
# バグ修正のコミットIDを確認
git log --oneline
# そのコミットだけをpatchファイルに
git diff abc123^ abc123 > bugfix.patch
受け取った人は、自分のブランチで簡単に適用できます。
git apply bugfix.patch
これで、バグ修正だけが反映されます。
複数の変更をまとめて共有
直近の3つのコミットをまとめて共有したい場合は、以下のようにします。
git diff HEAD~3 HEAD > recent-changes.patch
HEAD~3
は3つ前のコミットを指します。
これで3つ分の変更がまとめてpatchファイルになります。
使いこなすためのポイント
小さな変更に向いている
patchファイルは、小規模な修正を共有するのに最適です。
数十行程度の変更なら、とても使いやすいです。
一方で、大規模な機能追加には向いていません。
コミット履歴は含まれない
patchファイルには変更内容だけが記録されます。
誰がいつコミットしたかという情報は含まれません。
履歴も含めたい場合は、別の方法を使う必要があります。
レビューしやすいサイズを心がける
あまりに大きなpatchファイルは、レビューする人も大変です。
適度に分割して、読みやすいサイズにしましょう。
よくある質問
Q: patchファイルはテキストエディタで開ける?
A: はい、普通のテキストファイルなので開けます。
中身を見ると、どこがどう変更されたかが記載されています。
Q: ブランチとどう使い分ける?
A: 基本的にはブランチを使うのがおすすめです。
patchファイルは、一時的な共有や小さな修正に使うと便利です。
Q: 適用に失敗したらどうなる?
A: ファイルは変更されず、エラーメッセージが表示されます。
元の状態のままなので、安心して試せます。
今回のまとめ
git diffとpatchファイルを使えば、特定の変更だけを簡単に共有できます。
小さなバグ修正や、一時的な確認作業にとても便利です。
基本的な使い方は以下の通りです。
差分をファイルに保存する:git diff > changes.patch
patchを適用する:git apply changes.patch
まずは小さな変更から試してみてください。
慣れてくると、開発効率がグッと上がりますよ。
著者について

とまだ
フルスタックエンジニア
Learning Next の創設者。Ruby on Rails と React を中心に、プログラミング教育に情熱を注いでいます。初心者が楽しく学べる環境作りを目指しています。
著者の詳細を見る →