LoginSignup
18
17

More than 5 years have passed since last update.

gitでバイナリパッチを作ってみよう(git diff --binary)

Last updated at Posted at 2014-02-20

gitでバイナリファイルの差分を出力したいときはgit diff --binaryを使いましょうって話。

「コミットすればいいじゃん」ってゆうツッコミは置いといて。
他の人と一時的な差分を共有するとき、git diff > hoge.diffとかやってパッチを渡すことがある。

そんなとき、バイナリファイルに差分があったらどうするか。

「このパッチをあてて、このバイナリファイルをここに置いて、それからこうやってビルドしてください。」ってのはちょっと残念。

git diffはデフォルトでバイナリ差分を省略するので、--binaryオプションの出番。
ちなみにテキストファイルの差分もちゃんと一緒に出力してくれる。このオプションは例えばgit showなどでも使える。

適用するときは特にオプションは不要でgit applyでバイナリも変更してくれる。
ただ一点注意。もしパッチを渡す相手が昔ながらのpatchコマンドを使っていた場合、binary差分は完璧に無視する上にpatchコマンドは成功したことになる。
「git applyしてください」の一言とともにバイナリパッチを渡せば余計なトラブルを回避できる。

git diff

diff --git a/hoge.tgz b/hoge.tgz
index 02ba93c..d0ce544 100644
Binary files a/hoge.tgz and b/hoge.tgz differ

git diff --binary

diff --git a/hoge.tgz b/hoge.tgz
index 02ba93ce61277f57c93dc3c9edd7e8152fc75333..d0ce544c18d7c418929cf19fdf80b689c4d1d17b 100644
GIT binary patch
delta 13
UcmeBW>}6z?@8)2*GLf|d02mSj#sB~S

delta 13
UcmeBW>}6z?@8)1wIgzyk02gKhn*aa+

#どうやってテキストに変換してるんだろう?base64じゃないみたいだけど、独自フォーマットかな?

18
17
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
17