【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【WordPress 専用】クラウドサーバー『ウェブスピード』

【WordPress 専用】クラウドサーバー『ウェブスピード』

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【予約システム開発】EDISONE カスタマイズ開発サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【200ヶ国以上に対応】グローバル eSIM「ビヨンドSIM」

【200ヶ国以上に対応】グローバル eSIM「ビヨンドSIM」

【中国への旅行・出張・駐在なら】中国SIMサービス「チョコSIM」

【中国への旅行・出張・駐在なら】中国SIMサービス「チョコSIM」

【グローバル専用サービス】北米・中国でも、ビヨンドのMSP

【グローバル専用サービス】北米・中国でも、ビヨンドのMSP

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

git diff で作ったパッチはどうやって当てるのか(そもそも git でパッチ

git

こんにちは。
開発チームのワイルド担当、まんだいです。

git には「パッチ」という仕組みがあります。
git stash でうまく切り抜けられない時にたまに使うことがあるにも関わらず、この超絶簡単なコマンドが覚えられません。

なので、忘れてもいいようにブログに残すことにしました。

 

パッチを作成する時

パッチを作成する場合は、 git diff コマンドを使用します。

git diff test.txt > test.patch

 

パッチを作りたいだけ作ったら、後は git reset で元通りですね。
パッチファイルさえあれば、この時点の内容にすることが可能です。

ちなみに diff を取るのは、デフォルトで現状のファイルとそのファイルのインデックスの状態になります。
コミット ID を指定して数世代前から diff を取ることもできます。

使ったことはないですが、コミット ID を2つ指定すると、コミット ID 間の diff を取ることもできるようです。

 

パッチを適用する時

では次は、パッチの内容を反映させてみます。

git apply test.patch

 

これだけです。
ただし、 git apply する時点のファイル内容が、 git diff した時のものと違う場合、適用されません。
こういう場合は、 git diff でチラッと紹介した、コミット ID を指定して diff を取る方法が使えます。

ふと、 patch --dry-run と同じことをする場合、どうしたらいいんだろうか、と思って調べると、 --check オプションというのがそれに当たるようです。

 

まとめ

git を使ったパッチ作成、適用の手順をまとめました。

git diff でコミット ID 同士でパッチを作成できるのは、今回初めて知りましたが git ならではの機能でいつかサラッと使って得意げな顔をしてみたいものです。

git apply の --check オプションについて少し調べる機会ができたのも今回大きな収穫でした。
コードレビューする時の事前確認としても使えそうですね。

 
以上です。

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
1
読み込み中...
1 票, 平均: 1.00 / 11
68,841
X facebook はてなブックマーク pocket
【2025.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

【2025.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

この記事をかいた人

About the author

萬代陽一

ソーシャルゲームのウェブ API などの開発がメイン業務ですが、ありがたいことにマーケティングなどいろんな仕事をさせてもらえています。
なおビヨンド内での私の肖像権は CC0 扱いになっています。