处理git没做修改,但是文件显示变更的情况

使用 TortoiseGit(小乌龟 Git) 时遇到 "文件内容没改,但显示为变更,提示有 n 行删除、n 行添加",你可以按照以下步骤操作来排查并解决问题:

✅ 一、定位问题根源(是否为行尾差异)

右键 → TortoiseGit → Diff

打开差异对比工具(TortoiseGit 默认用 TortoiseMerge)

如果:

每行都显示红色/绿色,但内容完全一样

每行尾巴处出现小圆点(表示 \r\n ↔ \n 的差异)

那么基本可以确定是换行符不同(CRLF ↔ LF)。

🔧 二、根治方案:统一换行符策略

✅ 方案 A:用 .gitattributes 固定换行符(推荐)

适用于跨平台协作(如:Windows + macOS 或 Linux)

在项目根目录新建或修改 .gitattributes 文件,加入:

arduino

复制

编辑

  • text=auto eol=lf
    然后在项目目录中:

右键空白处 → Git Bash Here

执行以下命令:

bash

复制

编辑

git add .gitattributes

git add --renormalize .

git commit -m "Normalize line endings"

此后 Git 会自动将所有行尾统一为 LF(推荐标准)。

✅ 方案 B:设置 Git 自动行尾转换(Windows 上个人使用)

在资源管理器任意空白处右键 → TortoiseGit → Settings

左侧导航选择:Git → Config

在 "Global" 标签页下点击 "Edit global .gitconfig"

添加以下内容(如果没有):

ini

复制

编辑

core

autocrlf = true

含义是:Git 仓库内统一使用 LF,工作区自动转换为 CRLF(Windows 的默认行尾)

保存并关闭,重启 TortoiseGit。

🧹 三、临时跳过差异查看(不用解决,只是忽略显示)

使用 TortoiseGit → Diff 时

点击工具栏右上角的**"Options"**,然后勾选:

Ignore line endings(忽略换行符差异)

Ignore whitespace(忽略空格差异)

🚫 如果是可执行位差异(mode change 100644 ↔ 100755)

虽然你"没改代码",Git 可能检测到了可执行权限改变。

在 TortoiseGit 中不会直接显示文件权限变化

你可以:

右键 → Git Bash Here

执行:

bash

复制

编辑

git diff --summary

如果看到:

复制

编辑

mode change 100644 => 100755

就是这个问题

解决方法:

bash

复制

编辑

git update-index --chmod=-x

✅ 总结(推荐做法)

类型 推荐做法

行尾换行符 .gitattributes + git add --renormalize .

个别机器配置 core.autocrlf = true

忽略查看差异 TortoiseGit Diff → Options → 勾选忽略换行符

最后无换行符 设置编辑器(VSCode、Notepad++)保存时自动加换行

如你愿意,我可以帮你生成 .gitattributes 文件内容,或者远程一步步指导操作。你也可以把出现问题的 git diff 贴上来看一下具体是什么类型的"伪变更"。

相关推荐
计算衎34 分钟前
git仓库中的.git目录 , .gitattributes、.gitignore、.gitmodules、.modules文件作用与讲解
git·git bash·文件结构
Murphy_lx4 小时前
git工作流程
git
Elias不吃糖4 小时前
Git常用指令合集
linux·git
melt_10267 小时前
【gitee账号设置】git多个账号在多台电脑上使用
git·gitee·git账号管理
南宫真汀8 小时前
微信小程序项目上传到git仓库(完整操作)
git
夜月yeyue10 小时前
嵌入式开发中的 Git CI/CD
c++·git·单片机·嵌入式硬件·ci/cd·硬件架构
真人不梦11 小时前
Lazygit: 从0到熟练使用,你需要的都在这里
git·github
denggun1234515 小时前
图片上传git时压缩
git·ios·objective-c·iphone·xcode
行走的陀螺仪17 小时前
git-旧项目继续开发新功能,同时还要维护线上版本
git·git push·git commit·git 协同开发
fendouweiqian21 小时前
git提交与commitlint规则
git