这听起来像是一个多余的问题(而且很可能是一个多余的问题),但我找不到答案。情况是这样的:
我的应用程序正在创建以 CR 作为行结尾的文本文件。更具体地说,我没有明确地将行结尾设置为 CR,它恰好是我用来获取文本正文的命令的输出。当然,我可以手动将 CR 转换为 LF,但如果可以避免的话我不想这样做。
Git 将这些文件视为一行(例如在比较期间)。我通过这个测试存储库确定行结尾是原因:https://github.com/jfletcher4d/diff-test https://github.com/jfletcher4d/diff-test
我实际上并不关心文件系统上的行结尾是什么。这并不重要,至少现在还不重要(我最终可能会关心是否需要导入这些文件,现在只是导出)。但是我愿意not如果我可以避免的话,出于性能原因以及肛门保留原因,我想在我的应用程序中将 CR 转换为 LF :) 即这不是如何创建文本文件的问题,而是如何强制存储库中的每个文本文件仅包含 LF 的问题。
git可以配置更改吗all行结尾为 LF,即使文件是用 CR 提交的?
我在 Windows 上,在学习 git 时交替使用 TortoiseGit 和 msysgit(还有一点 TortoiseSVN),如果这很重要的话。
Git 似乎不支持 CR 行结尾,所以我会写一个filter http://man.github.com/git/gitattributes.html#_tt_filter_tt转换换行符。工作树中的文件将以 CR 行结尾,并且在索引时将透明地转换为 LF。该过滤器有两个部分:“clean”检入文件,“smudge”检出文件。
使用这个.git/config
:
[filter "cr"]
clean = tr '\\r' '\\n'
smudge = tr '\\n' '\\r'
And .git/info/attributes
(or .gitattributes
如果应该进行版本控制)
* filter=cr
请注意,这会自动使git-diff
很高兴,因为它将使用“干净”版本。
请记住将模式设置为您需要的文件,否则二进制文件将被损坏,并且所有文本文件将以 CR 行结尾检出。
另请注意,如果未配置过滤器,它将默默失败,因此在设置存储库的新副本时添加配置行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)