我在GitHub上有一个小项目。该项目包括Readme.txt。存储库中的一切工作正常,换行仍然存在,但是当用户从存储库下载.zip文件时,换行符就会消失。
示例:
这是一条线 这是另一条线
This is an indented line.
这条线远远低于。
变为:
这是一条线。这是另一条线。这是预定的路线。这个 线远远低于。
这种行为使Readme.txt很难阅读,特别是如果它有很多缩进。
有没有办法解决这个问题?最好不要改变文件类型。
为了澄清,我的目标是在没有Git的情况下使用GitHub页面中的“Download ZIP”按钮。
答案 0 :(得分:9)
作为nulltoken explained,这是因为GitHub在Linux机器上运行git archive
,默认为linux行结尾。您可以通过为repo中的文件显式设置行结尾来更改此设置。要实现此目的,请在您的仓库的根目录中创建一个包含以下内容的.gitattributes
文件并提交。
*.txt eol=crlf
所有GitHub创建的包含该文件的修改包现在所有CRLF
个文件中都有.txt
行结尾。您可以使用*
而不是*.txt
将其扩展到所有文件,但我建议不要这样做,因为它会让Linux用户感到悲伤。
答案 1 :(得分:2)
在内部,GitHub的“Download Zip”功能利用git archive
。
git archive
实际执行指向提交的检出,将内容流式传输到tar或zip存档。
在结账过程中处理行结尾的方式最终取决于运行命令的平台。
由于GitHub服务器是基于Linux的,因此文本文件的选定行将是Linux本机服务器(即LF)。
所以(目前)没有办法干扰这个,你的zip / tar下载中的文本文件将被LF终止。
但是你可能还是
答案 2 :(得分:0)
如果下载zip不适合您,则使用标准git方法git archive
git archive --format zip HEAD ..\repo.zip
这将在repo.zip
文件的工作树中创建最新跟踪的已提交文件的压缩版本。您必须在本地仓库中执行它。
答案 3 :(得分:0)
一个比eol=crlf
更好的选项,它总是将LF转换为CRLF,是使用-text
,它永远不会转换为任何一种方式。
*.patch -text
(我还没有测试过这个。)