二进制文件是好的吗?
二进制文件是好的吗?
如果我有很多未压缩的文件被修改,并且许多压缩文件从不(或几乎从不)被修改,会混帐处理呢? 例如,如果我插入或删除中间并在末尾附近插入数据,它会像注意文本一样注意到它。
如果git对二进制文件不好,我可以考虑什么工具?
除了其他的答案。
-
您可以使用所谓的二进制比较格式将差异发送到二进制文件。 这是不可读的,只有在您的存储库中有准确的原始图像时,才能应用它,即没有任何模糊。
一个例子: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)C@u6{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`NJfeQjFwttKJyJNq@ hveI=@x=fAo=hV3$-MIWu9%vGSr>mdKI;RB2CICA_GnfDX
-
您可以使用textconv gitattribute让
git diff
显示二进制文件或二进制文件的部分的可读的差异。 例如,对于* .jpg文件,它可以是EXIF信息的差异,对于PDF文件,它可以是其文本表示(pdf2text或类似的东西)之间的差异。
HTH。
开箱即用,git可以很容易地将二进制文件添加到其索引,并以有效的方式存储它们,除非您频繁更新大型的不可压缩文件。
当git需要生成差异和合并时,问题就开始了:git不能生成有意义的差异,或者以任何合理的方式合并二进制文件。 因此,所有涉及对二进制文件进行更改的合并,更名或者樱桃选项将涉及您对该二进制文件进行手动冲突解决。
您需要确定二进制文件更改是否足够稀less,以至于您可以在正常的git工作stream程中执行额外的手动工作,这些工作涉及合并,redirect,cherrypicks。
如果你有非常大的二进制文件,你可以使用git-annex来存储仓库以外的数据。 查看: http : //git-annex.branchable.com/
我不知道有哪些工具可以存储二进制文件的版本控制差异,但值得一提的是Git甚至不会为文本文件做这个。 Git将文件存储为blob,并在需要时在它们之间进行区分。
如果您想要对Photoshop / Illustrator文档进行版本控制, GridIron Flow可能会为您做好准备。 如果你想让它们在机器之间保持同步,Dropbox或者Rsync可以处理它,但是它们不会做智能化的扩散。
那么git是好的二进制文件。 但是它不会像文本文件一样处理二进制文件。 这就像你想要合并二进制文件。 我的意思是,JPEG上的差异将永远不会返回给你任何东西。 Git对于文本文件工作得非常好,可能和其他二进制文件解决scheme一样糟糕!