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

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

相关推荐
sz66cm9 分钟前
git基础 -- 查找文件内容
git
笑鸿的学习笔记15 分钟前
git笔记之重置本地仓库所有分支和远程保持一致、工作区恢复干净,像刚clone下来一样
笔记·git·elasticsearch
ITKEY_25 分钟前
FileZilla Server 黑白单移除
git·github
极地星光2 小时前
使用脚本自动化管理外部Git仓库依赖
运维·git·自动化
一雨方知深秋2 小时前
建立分支提交代码
git·python·gitee
2301_786964369 小时前
利用git将项目上传到github
git·github
敲厉害的燕宝11 小时前
Git常用方法——详解
git
科技前言13 小时前
程序bug的修复之道
git·学习·编程
Dalier.14 小时前
Git 使用方法
git