回答:
あなたは、設定することができます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に注意してください)作れば、それを保存したいです。