【发布时间】:2013-10-25 01:45:11
【问题描述】:
我在我的 git 存储库中添加了一些 .png 图像,然后将它们推送到我的远程存储库。我注意到图像在远程存储库中,但它们已损坏。
为了验证这一点,我比较了本地和远程存储库中图像的二进制数据。我还在两个存储库中的图像上运行了file 命令。
本地存储库上的图像
前 10 行二进制数据:
8950 4e47 0d0a 1a0a 0000 000d 4948 4452 0000 0019 0000 0014 0806 0000 0078 7796 bd00 0000 1974 4558 7453 6f66 7477 6172 6500 4164 6f62 6520 496d 6167 6552 6561 6479 71c9 653c 0000 0373 6954 5874 584d 4c3a 636f 6d2e 6164 6f62 652e 786d 7000 0000 0000 3c3f 7870 6163 6b65 7420 6265 6769 6e3d 22ef bbbf 2220 6964 3d22 5735 4d30 4d70 4365 6869 487a 7265 537a 4e54 637a 6b63 3964 223f 3e20 3c78 3a78 6d70
file 命令的结果:
bundles/admin/public/images/messages-icon.png:PNG 图像数据,24 x 16,8 位/彩色 RGBA,非隔行扫描
图像推送到远程存储库
前 10 行二进制数据:
8950 4e47 0a1a 0a00 0000 0d49 4844 5200 0000 1900 0000 1408 0600 0000 7877 96bd 0000 0019 7445 5874 536f 6674 7761 7265 0041 646f 6265 2049 6d61 6765 5265 6164 7971 c965 3c00 0003 7369 5458 7458 4d4c 3a63 6f6d 2e61 646f 6265 2e78 6d70 0000 0000 003c 3f78 7061 636b 6574 2062 6567 696e 3d22 efbb bf22 2069 643d 2257 354d 304d 7043 6568 6948 7a72 6553 7a4e 5463 7a6b 6339 6422 3f3e 203c 783a 786d 706d
file 命令的结果:
bundles/admin/public/images/notifications-icon.png:数据
为什么会发生这种情况?我在谷歌和这个网站上搜索了所有答案,但没有找到答案。
【问题讨论】:
-
鉴于
8950 4e47 0d0a 1a...与8950 4e47 0a1a很明显(嗯... :-))有人认为这是一个文本文件并将 CR-LF (0d0a) 转换为仅 LF (0a)。您(或他们)是否使用core.eol属性和/或其他 git 属性来管理行尾规范化? -
我想是的,我们的
.gitattributes文件中有* text eol=lf,并且没有设置core.eol -
我的
.gitattributes文件中也将 .png 列为二进制文件 -
我从来没有真正使用过 git 的转换,但听起来你这边设置正确,所以我会检查遥控器的设置,以防它以某种方式损坏。
-
git check-attr --all -- path/to/png说什么?
标签: image git corruption git-push