LoginSignup
4
3

More than 3 years have passed since last update.

git diff でバイナリをテキスト化して差分をとる方法

Last updated at Posted at 2018-11-28

TL;DR

console
$ git config diff.binaryfile.textconv dir
$ echo "*.bin diff=binaryfile" >> .gitattributes

textconvに与えるコマンド

第一引数 にテキスト化したいバイナリのファイルパス
標準出力 にテキスト化された結果

となるようなコマンド。

そもそもバイナリファイルは大きくなりがちなので、全体的に XML とかにシリアライズするととんでもない長さの結果が出てくる。ある程度の構造単位でハッシュをとっていくようなプログラムが良さそうな気がする。

ちなみに、Windowsのdirコマンドはファイルを渡すと最重更新日時を含むテキストを返してくれるので、編集していると差分が出ます。(これだけでは役に立ちませんが)

問題点

  • git diff でのみ使われる。(Github ページや、 VSCode の GitHistory では見られない)

  • git diff の際に一時的にコンバートされるにすぎないので、コミットごとに差分が取られるわけではない。もちろんマージもできない。

参考

8.2 Git のカスタマイズ - Git の属性

4
3
0

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
4
3