因为OP提到了对多OS解决方案的需求,所以这个答案似乎很重要。这个Github 帮助文章详细介绍了跨OS处理行结尾的可用方法。存在用于管理跨操作系统行尾的全局和按存储库的方法。
全球方针
在Linux或OS X上配置Git线尾处理:
git config --global core.autocrlf input
在Windows上配置Git行尾处理:
git config --global core.autocrlf true
按回购方式:
在你的回购的根目录,创建一个.gitattributes
文件,并为您的项目文件中定义的行结束设置,在格式如下一次一行:path_regex line-ending-settings
这里line-ending-settings
是以下情况之一:
text
可以进一步配置该值,以指导Git如何处理匹配文件的行尾:
text
-将行尾更改为OS本机行尾。
text eol=crlf
- CRLF
在结帐时将行尾转换为。
text eol=lf
- LF
在结帐时将行尾转换为。
text=auto
-明智的默认设置,让线句柄由Git自行决定。
这是一个示例.gitattributes文件的内容:
# Set the default behavior for all files.
* text=auto
# Normalized and converts to
# native line endings on checkout.
*.c text
*.h text
# Convert to CRLF line endings on checkout.
*.sln text eol=crlf
# Convert to LF line endings on checkout.
*.sh text eol=lf
# Binary files.
*.png binary
*.jpg binary
更多有关在此处更改行尾设置后如何刷新仓库的信息。Tldr:
使用Git备份文件,删除存储库中的每个文件(.git目录除外),然后一次还原所有文件。将当前文件保存在Git中,这样就不会丢失任何工作。
git add . -u
git commit -m "Saving files before refreshing line endings"
删除索引并强制Git重新扫描工作目录。
rm .git/index
重写Git索引以拾取所有新行结尾。
git reset
显示重写的标准化文件。
在某些情况下,这就是所有要做的事情。其他人可能需要完成以下附加步骤:
git status
重新添加所有已更改的文件,并准备提交。这是您检查哪些文件(如果有)未更改的机会。
git add -u
可以很安全地在此处看到许多消息,上面写着“警告:文件中的LF将替换为CRLF”。
重写.gitattributes文件。
git add .gitattributes
将更改提交到存储库。
git commit -m "Normalize all the line endings"