自学内容网 自学内容网

Git No newline at end of file

Git No newline at end of file

通过 IDE 修改代码,保存之后
在 git 查看 diff 发现,之前的所有代码显示 删除,然后重新添加,并且最后一行显示 No newline at end of file

这个是换行符问题
解决方案

打开命令行执行下面命令

git config --global core.autocrlf false
git config --global core.filemode false
git config --global core.safecrlf true

下面是对你提到的三个 Git 配置命令的解释,它们与换行符和文件权限处理相关:

  1. git config --global core.autocrlf false
    core.autocrlf 控制 Git 如何在不同平台上处理换行符转换。不同操作系统使用不同的换行符:

Windows: 使用 CRLF (\r\n)
Linux/macOS: 使用 LF (\n)
core.autocrlf 的常见选项:

true: 当文件被添加到 Git 时,Windows 的 CRLF 会被转换为 LF。当文件被检出时,Git 会将 LF 转换回 CRLF。这适用于 Windows 用户。
input: 提交时将 CRLF 转换为 LF,但检出时不做任何转换。适合 Linux 或 macOS 用户与 Windows 用户协作时使用。
false: Git 不进行换行符转换。这意味着 Git 不会在检出或提交时修改任何换行符。这通常用于不需要 Git 管理换行符转换的情况。
你设置 core.autocrlf false 后,表示 Git 不会自动处理换行符转换。如果你的开发环境是跨平台的,可能需要手动处理不同平台的换行符差异。

  1. git config --global core.filemode false
    core.filemode 控制 Git 是否在文件权限(可执行位)发生变化时将其视为内容的变更。

true(默认值):Git 会监控文件的权限变化(例如可执行位的变化),并将其视为文件内容的一部分。如果文件权限发生变化,Git 会将其作为变更。
false: Git 将忽略文件权限的变化。这通常用于文件权限不可控制的情况下,特别是在 Windows 系统或某些共享文件系统中,权限位可能不准确或不一致。
你设置 core.filemode false 后,表示 Git 将忽略文件权限的变化。

  1. git config --global core.safecrlf true
    core.safecrlf 用来防止换行符自动转换带来的问题。

true: Git 在提交时会检查换行符的转换是否合法。如果试图提交的文件包含不一致的换行符(如混合使用 CRLF 和 LF),Git 会阻止提交。这有助于避免在不同操作系统之间协作时出现的换行符问题。
false: Git 不会检查换行符的合法性。
warn: 如果 Git 检测到不一致的换行符,会发出警告,但不会阻止提交。
你设置 core.safecrlf true 后,Git 会强制检查提交的文件中是否存在不一致的换行符格式,确保文件在跨平台协作时换行符处理一致。

总结:
core.autocrlf false: Git 不会自动处理换行符的转换。
core.filemode false: Git 忽略文件权限的变化。
core.safecrlf true: Git 强制检查换行符是否一致,避免跨平台合作时出现问题。
这些设置主要用于确保不同平台之间文件的换行符和权限处理的一致性。如果你的项目跨平台开发,确保这些设置能够避免潜在的换行符和权限问题。如果你需要更多详细说明或具体问题,欢迎继续提问!


原文地址:https://blog.csdn.net/LIQIANGEASTSUN/article/details/142464850

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!