gitはバイナリファイルでいいですか?gitはバイナリファイルでいいですか?
多くの圧縮されていないファイルが改ざんされていて、多くの圧縮ファイルが改ざんされていない(またはほとんど変更されていない)場合は、うまく処理できますか?たとえば、中央に挿入または削除して最後の近くにデータを挿入すると、テキストと同様に認識されます。
gitがバイナリファイルでうまくいかない場合は、どのツールを検討してください。
gitはバイナリファイルでいいですか?gitはバイナリファイルでいいですか?
多くの圧縮されていないファイルが改ざんされていて、多くの圧縮ファイルが改ざんされていない(またはほとんど変更されていない)場合は、うまく処理できますか?たとえば、中央に挿入または削除して最後の近くにデータを挿入すると、テキストと同様に認識されます。
gitがバイナリファイルでうまくいかない場合は、どのツールを検討してください。
まあ、gitはバイナリで良いです。しかし、テキストファイルのようなバイナリは扱えません。バイナリファイルをマージするようなものです。つまり、jpegの差分はあなたに何も返さないということです。 Gitはテキストファイルでうまく動作し、おそらくバイナリファイルを持つ他のすべてのソリューションと同じくらい悪いです!
バージョン管理用のバイナリファイルの差分を保存しようとするツールはありませんが、Gitはテキストファイルに対してもこれを行わないことに注意してください。 Gitはファイルをブロブとして保存し、必要なときにそれらのファイルを比較します。
Photoshop/Illustratorのドキュメントなどでバージョン管理を行う場合は、GridIron Flowがお役に立てます。マシン間でそれらを同期させようとしているなら、DropboxかRsyncはそれを処理できますが、インテリジェントなdiffingはしません。
gitコミュニティの書籍(http://book.git-scm.com/7_how_git_stores_objects)。 html): "そのスペースを節約するために、Gitはpackfileを利用します。これは、Gitが2番目のファイルで変更された部分だけを保存する形式です。 –
ガベージコレクションを実行するために 'git gc'を実行すると、そうです。同じページから: "Gitは各ファイルのバージョンを別々のオブジェクトとして保存するので、かなり効率が悪くなることがあります。ファイルが数千行長くなり、一行が変更されると想像してください。宇宙の大きな浪費だ」 – coreyward
フェア 'ナフ。 gitは自動的にgcを行いますが、少なくとも私が使用するプロジェクトではgcが自動的に行います。私はいつ実行するかを決定するためにどのメトリックが使用されているのかわかりません。おそらくはgcを引き起こすことのない樹木があります。 –
gitはデフォルトでバイナリファイルをインデックスに簡単に追加することができます。また、大きな非圧縮ファイルを頻繁に更新しない限り、効率的に格納することもできます。
gitで差分とマージを生成する必要があるときに問題が発生します。gitは意味のある差分を生成することはできませんし、バイナリファイルをマージすることも意味がありません。したがって、バイナリファイルに変更を伴うすべてのマージ、リベースまたはチェリーピックには、バイナリファイルの手動の競合解決が必要になります。
バイナリファイルの変更が、マージ、リベース、チェリーピックを含む通常のgitワークフローで発生する余分な手動作業で十分であるかどうかを判断する必要があります。
バイナリファイルの変更は問題ではなく、複数の場所で変更を加えてからマージしようとしていることを指摘しておきます。 –
gitは意味のある差分を生成できます。 'git diff --binary'で作成されたdiffは、バイナリファイルにパッチを当てることができます。 –
その他の回答に加えて、
あなたは、いわゆるバイナリ差分形式を使用してバイナリファイルに差分を送信することができます。これは人間が読める形式ではなく、正確なのプリイメージがリポジトリにある場合、つまり毛羽のない場合にのみ適用できます。
例:
diff --git a/gitweb/git-favicon.png b/gitweb/git-favicon.png
index de637c0608090162a6ce6b51d5f9bfe512cf8bcf..aae35a70e70351fe6dcb3e905e2e388cf0cb0ac3 100
GIT binary patch
delta 85
zcmZ3&SUf?+pEJNG#Pt9J149GD|NsBH{?u>)*{Yr{jv*Y^lOtGJcy4sCvGS>LGzvuT
nGSco!%*slUXkjQ0+{(x>@rZKt$^5c~Kn)[email protected]{1-oD!M<s|Fj6
delta 135
zcmXS3!Z<;to+rR3#Pt9J149GDe=s<ftM(tr<t*@sEM{Qf76xHPhFNnYfP!|OE{-7;
zjI0MY3OYE5upapO?DR{I1pyyR7cx(jY7y^{FfMCvb5IaiQM`[email protected]
[email protected]=fAo=hV3$-MIWu9%vGSr>mdKI;RB2CICA_GnfDX
あなたはバイナリファイル、またはバイナリファイルの一部のためのgit diff
ショーの人間が読める差分を持つようにTEXTCONVgitattributeを使用することができます。たとえば、* .jpgファイルの場合、EXIF情報の違いがあります.PDFファイルの場合、テキスト表現(pdf2textなど)が異なる場合があります。
HTH。
gitattributesについて教えてくれてありがとう!可能性のまったく新しい世界を開く。 – hermannloose
本当に大きなバイナリファイルがある場合は、git-annexを使ってリポジトリの外部にデータを保存できます。チェックアウト:http://git-annex.branchable.com/
Git-annexはすばらしいですが、頻繁に変更されないファイル*の方が適しているでしょう。音楽ファイル、写真、PDFのコレクション... –
その男が言ったように:Git-annex素晴らしいです! – dotancohen
バイナリで非常に良い - 自分で使ってください – tekknolagi
これはちょっと真実です。/homeをgitリビジョンの下に置くことができます。これはかなりうまくいくはずです。 –
これは、バイナリファイルにdiffが実行されているかどうか(おそらく、リポジトリの膨らみとパフォーマンス上の理由から)が懸念されているという問題の精神ではありません。しかし、私はそれをdownvoteしませんでした(誰もそれを削除して以来持っている)が表示されます。 – coreyward