Pra*_*eek 4 git github eol end-of-line
我有一个源代码存储库,可以在Windows和Linux上使用.
我知道Git会自动将EOL转换为本地标准:Windows上的\ r \n和Linux 上的\n.
这不是源文件的问题.
但我有一些CSV文件使用固定格式和给定的EOL字符(\ r \n),不应该更改,但Git也会转换它们,破坏了一些代码.
我试图通过在.gitignore文件旁边的根目录创建一个.gitattributes文件来阻止CSV文件的EOL转换,其中包含以下内容:
*.csv -text
Run Code Online (Sandbox Code Playgroud)
我已经应用了我所理解的内容:http://git-scm.com/docs/gitattributes
但是Git仍然在Linux上将\ r \n转换为\n.
我应该使用auto.crlf等其他设置吗?
请注意,我对Linux本地存储库的控制有限,因为它由持续集成服务器Jenkins管理.
感谢您的任何意见.
小智 6
请注意,git使用LF作为EOL的内部表示.
这意味着在您的情况下,*.csv文件在添加/提交时已更改.
所以解决方案大致如下:
实际上,它可以在一次提交中完成,使用以下命令:
### ... update .gitattributes
git rm --cached '*.csv'
### ... find -name '*.csv' -print0| xargs -0 unix2dos
git add '*.csv'
git add .gitattributes
git commit
Run Code Online (Sandbox Code Playgroud)
说明:
git rm --cached 从索引中删除所有csv文件,将它们留在磁盘上;unix2dos以其为例)git add '*.csv' 根据.gitattributes的新版本,将它们添加回来,这次没有任何转换| 归档时间: |
|
| 查看次数: |
735 次 |
| 最近记录: |