Gitでファイルをバイナリとして扱うにはどうすればよいですか?


104

中規模のプロジェクトで問題が発生します。gitがそれらをテキストとして処理し、マージするため、Visual Studioプロジェクトファイルで問題が発生し続けます。gitがこれらのファイルを自動マージしないように、ファイルをバイナリとして設定したいのですが。

これを行う方法はありますか?


2
しかし、Visual Studioプロジェクトファイルはテキストファイルであり、マージする必要がありますか?
CBベイリー

1
@CharlesBailey彼らは可能な限り最悪の方法で定期的にマージし、すべてのビルドを台無しにします。私はXMLをいじくり回したくありません。手動で新しいファイルを追加するか、場合によっては適切に処理する方法を知っているXML比較ツールを実行するように求めます。
michael.bartnett 2013

1
@ michael.bartnett:マージをめちゃくちゃにした場合にのみ、確かに?
CBベイリー

1
@CharlesBaileyもちろん、私が手動でマージしている場合は問題ありません。しかし、それは手動でマージする必要があるものではありません。これは通常、ビルド項目の追加/削除/編集です...完全に自動マージできますが、通常の行ごとのdiffメソッドではできません。概念の詳細については、このプレゼンテーションをご覧ください。
michael.bartnett 2013

@ michael.bartnett:より適切なマージドライバをセットアップしてください。私が(10か月前に)指摘したのは、プロジェクトファイルをマージできること、およびマージする必要があることです。個人的には、手作業で全体を行うよりも、合理的なマシンの試行を修正する方がずっと好きです。これは不要な作業のようです。
CBベイリー

回答:


135

はい、属性を使用します。次のようなものを.gitattributesファイルに入れます(存在しない場合は作成します)。

*.sln binary
*.suo binary
*.vcxproj binary

これbinaryは実際にはと同等の定義済みマクロ-diff -merge -textです。

それでも差分を見たい場合は、以下を使用できます。

*.sln -merge -text

このようにして、*.slnファイルはマージされず、EOLは正規化されませんが、その間は差分可能です。


1
このファイルはどこにありますか?
2016年

@nevesすべての場所でgitignoreファイルを見つけることができます。指定された回答のリンクで提供されるドキュメントに従ってください。
Michael Wild

4
@neves:あなたは1、いずれかのローカルあなたのレポやグローバルなどとして作るようになった~/.gitattributesし、次に実行されているgit config --global core.attributesfile ~/.gitattributes参照のことstackoverflow.com/questions/28026767/...
1月-GLX

自動的にマージされない場合、これらのファイルはどうなりますか?1つのバージョンが選択されていますか、それとも手動でマージする必要がありますか?
ClydeTheGhost

1
@ClydeTheGhostあなたは1つを選ぶ必要があります。
マイケルワイルド

6

ファイルにバイナリファイル属性を定義する.gitattributes(存在しない場合は作成する)ことで、ファイルをテキストdiffファイルとして処理できないようにします。

# Define binary file attributes.
# - Do not treat them as text.
# - Include binary diff in patches instead of "binary files differ."
*.sln     -text diff
*.suo     -text diff
*.vcxproj -text diff
*.gif     -text diff
*.gz      -text diff
*.ico     -text diff
*.jpeg    -text diff   
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.