我正在开发Web应用程序,但我发现GitHub无法正确复制某些图像文件。这些文件被正确识别为二进制文件,并且可以在我的本地计算机(Windows,Apache,MySQL,PHP)上正常工作,但是当我上载到服务器时,某些图像文件不起作用。 Google Chrome不会显示它们,没有错误或原因,Firefox表示该图像包含错误,因此无法显示。
因此,我将有问题的文件从服务器FTP传输到我的工作站,然后使用十六进制编辑器,发现从服务器复制回的文件短了一个字节。似乎文件中的PNG标记之后,下一个字节应为0x0D,但已将其删除,其余字节已移出。
因此,这意味着错误的文件位于存储库中。
现在我的问题是,如何修复存储库?
编辑:
在解决了这个问题后,我得出的结论是,问题似乎是GitHub试图将CRLF-> LF过滤器应用于相关文件。我不确定为什么要这样做,但这似乎就是这里发生的事情。
答案 0 :(得分:3)
GitHub本身不做CRLF技巧。 GitHub(无论如何,除了其Web界面)都只是为您存储提交。犯规。
可以告诉Git 做CRLF技巧。这些发生在两个地方:
当文件从索引 复制到工作树时,Git会进行您要求的任何输出端转换。通常,Windows用户经常要求Git将仅LF的行尾转换为CRLF的行尾。
当文件从工作树复制到索引中时,Git会进行您要求的任何输入端转换。 Windows用户可能会要求Git在这里将CRLF的行尾转换为仅LF的行尾。
作为Windows用户,您必须注意告诉Git使用哪种方式操作的文件。您可以通过保存在名为.gitattributes
的文件中的设置来做到这一点:
* text=auto
*.txt text
*.jpg -text
您使用core.eol
或core.autocrlf
或类似方法进行的所有设置都不会像.gitattributes
中的特定设置那样仔细和精确,因此,如果要使用此功能Git,请使用.gitattributes
文件。
有关更多信息,请参见the gitattributes documentation中的示例。