有没有办法在 Atlassian SourceTree 中或使用我当前的 git 主机(BitBucket)来全局更改所有存储库的行尾。
我认为它们目前设置为 Unix(我想我是无意中这样做的),但我只在 Windows 上进行开发。我的 IDE 不断向我发出有关文件中混合行尾的警告消息和错误,我想修复它,但每次我将项目推送到云端时,它都会改回 Unix 结尾,所以即使我批量更改行尾,它们也会被恢复。
答案1
您可以通过添加特殊.gitattributes 文件到 Git 存储库的根文件夹。如果将此文件提交到存储库,它将覆盖各个开发人员的 core.autocrlf 设置。
在此文件中,您可以配置 Git 以自动检测行尾。
笔记:-并非所有图形 Git 工具都支持 .gitattributes 文件,例如 Eclipse IDE 目前就不支持它。
以下是 .gitattributes 文件示例。您可以将其用作存储库的模板:
# Set the default behavior, in case people don't have core.autocrlf set.
* text=auto
# Explicitly declare text files you want to always be normalized and converted
# to native line endings on checkout.
*.c text
*.h text
# Declare files that will always have CRLF line endings on checkout.
*.sln text eol=crlf
# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary
您会注意到,文件匹配--*.c、*.sln、*.png--,以空格分隔,然后给出设置--文本、文本 eol=crlf、二进制。我们将在下面介绍一些可能的设置。
文本=自动 Git 将以其认为最佳的方式处理文件。这是一个很好的默认选项。
文本 eol=crlf Git 会在签出时始终将行尾转换为 CRLF。您应该对必须保留 CRLF 结尾的文件使用此功能,即使在 OSX 或 Linux 上也是如此。例如,这是一个强制使用 CRLF 行尾的 Windows 项目。
文本 eol=lf Git 总是会在签出时将行尾转换为 LF。您应该对必须保留 LF 结尾的文件使用此功能,即使在 Windows 上也是如此。对于例子,这是一个强制使用 LF 行尾的项目。
二进制 Git 会理解指定的文件不是文本,因此它不会尝试更改它们。二进制设置也是 -text -diff 的别名。