Git No newline at end of file

Git No newline at end of file

通过 IDE 修改代码,保存之后

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

这个是换行符问题

解决方案

打开命令行执行下面命令

csharp 复制代码
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 强制检查换行符是否一致,避免跨平台合作时出现问题。

这些设置主要用于确保不同平台之间文件的换行符和权限处理的一致性。如果你的项目跨平台开发,确保这些设置能够避免潜在的换行符和权限问题。如果你需要更多详细说明或具体问题,欢迎继续提问!

相关推荐
小毛驴85010 小时前
所有微服务部署都使用一个git地址,并且通过docker部署各个服务的情况下,如何编写mvn指令来处理各个服务。
git·docker·微服务
国王不在家10 小时前
git 切换仓库后清理分支缓存
git
柯南二号13 小时前
【Gitlab】Ubuntu 20.04服务器部署Gitlab
git·gitlab
phac12314 小时前
git 如何直接拉去远程仓库的内容且忽略本地与远端不一致的commit
大数据·git·elasticsearch
ficker131 天前
git常用命令
git
kevin_cat1 天前
微信群机器人-备份文件发送通知
git·bash·企业微信
程序媛Dev1 天前
50.4k Star!我用这个神器,在五分钟内搭建了一个私有 Git 服务器!
运维·服务器·git
澈轩2 天前
Git 用得好,下班走得早
git
人间造梦工厂2 天前
Git Bash 别名
git
画个太阳作晴天2 天前
解决 Android Studio 中 build 目录已被 Git 跟踪后的忽略问题
git