回答:
あなたは、設定することができますtextconvファイルタイプのための設定オプションを。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
Roland Smithからの回答は役に立ちましたが、現在は不完全です(コメントを参照)-これには2つの部分があります。
リポジトリの.git/configファイルまたは個人用グローバル~/.gitconfigファイルに新しいdiffコマンドを定義できます。たとえば、次を使用した16進diffコマンドhexdumpです。
[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も参照してください。
.gitattributesグローバルを設定することもでき[diff]ます(グローバルのエントリに合わせて.gitconfig)。.gitattributesリポジトリのローカルを作成する場合.gitconfig、セキュリティ上の理由からこれらはリモートにプッシュされないため、ユーザーはローカルリポジトリ設定を変更する必要があります。どちらの方法でも、各ユーザーはこの動作を有効にするにはローカルファイル/構成を何らかの方法で更新する必要があります。で.gitconfig下の[core]追加attributesfile = c:/users/<username>/.gitattributesまたはどこにあなたはそれがグローバル(でもウィンドウで、forwardslashesに注意してください)作れば、それを保存したいです。