Gitでバイナリファイルを比較するには、difftoolを設定する必要があると思います。
どのdifftoolsが機能しますか?パラメータをどのように配置しますか?
ファイルタイプにtextconv
configオプションを設定できます。 gitattributes(5) の「バイナリファイルのテキスト差分の実行」を参照してください。何を使用するかは、ファイルタイプによって異なります。
例1:
Zipファイルの内容を比較したいとします。その場合は、$ GIT_DIR/configファイルまたは$ HOME/.gitconfigのいずれかに以下を配置する必要があります。
[diff "Zip"]
textconv = unzip -v
次にリポジトリのZipファイルの差分を要求すると、両方のバージョンでunzip -v
が呼び出され、結果のテキストが差分されます。
例2:
PDFファイルの場合、たとえばpdfinfo
;
[diff "pdf"]
textconv = pdfinfo
例3:
ファイルタイプに特定の情報ユーティリティがない場合は、たとえば、 hexdump
を使用(FreeBSDおよびOSXに付属、Linuxでも使用可能):
[diff "bin"]
textconv = hexdump -v -C
Gitにバイナリファイルのdiffをプレーンテキストのdiffとして表示させる場合は、次のように--text
オプションを使用します。
git diff --text
Roland Smithからの回答は役に立ちましたが、現在は不完全です(コメントを参照)-これには2つの部分があります。
リポジトリの.git/config
ファイルまたは個人のグローバル~/.gitconfig
ファイルで新しいdiffコマンドを定義できます。たとえば、hexdump
を使用したhex diffコマンド:
[diff "hex"]
textconv = hexdump -v -C
binary = true
次に、リポジトリの.gitattributes
ファイルを使用して、この特別なdiffコマンドで使用するファイルをgitに指示する必要があります。
# Binary files (no line-ending conversions), diff using hexdump
*.bin binary diff=hex
.gitignore
ファイルと同様に、.gitattributes
ファイルをリポジトリにチェックインする必要があります。
私の場合、バイナリとして扱いたいいくつかの異なるファイル拡張子があり(たとえば、Windowsでgitを使用している場合は、改行変換を避けます)、hexdump
を使用して違いを確認します。
https://github.com/peterjc/galaxy_blast/commit/5ec4695e6c3da3926fb100ca006f0f3e88c53c3d
画像ファイルで使用するためのhexdump diffコマンドを定義する別の例については、 https://github.com/resin-io/etcher/pull/1367 も参照してください。