vscode git 文件内容未修改,却显示在 changes里面

目录

一、问题

二、原因及解决方法

三、总结


tiips:如嫌繁琐,直接移步总结即可!

一、问题

1.bug修复到了旧的分支上了,新迁移的库中没有这些bug修复,一个个找对应的文件修改太麻烦了,于是想把修改的分支上上的代码全部 复制过来。但是复制过来之后发现,changes里面显示的修改文件有 500+,然后实际修改的文件只有 10+。如图1-1所示

图 1-1

二、原因及解决方法

1.网上找了各种方法,没有效果,还因为全局设置了  .gitconfig 配置导致 新拉的git代码文件修改后不显示,详见 https://blog.csdn.net/qq_45327886/article/details/139301362?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22139301362%22%2C%22source%22%3A%22qq_45327886%22%7D

2.仔细对比了一下 两个文件的属性,发现新库中的git clone文件(被git托管)git 仓库 download下载下来的文件 内容是完全一致的,但是 大小不一样。具体如下图2-1所示。

不知道为什么,猜测是 被git托管的文件还包含了git相关的隐藏信息

图 2-1

3.download下来的不一样,那我 git clone 以前旧仓库的代码,应该就一样了吧。

操作了一下,果真是一样的,如图 2-2 所示

图 2-2

4.现在把 旧的git托管的代码 复制到 新的git托管代码上去,就发现 changes的数量是正确的了。

5.又试了,vscode 显示 500+变更时,git diff --stat 看到实际修改的文件:控制台输出警告

warning: LF will be replaced by CRLF in apps/mems-web/src/assets/css/fonts.scss.
The file will have its original line endings in your working directory。

网上搜索到是因为 不同平台的换行符不一致导致的,windows:crlf,  ma,linux:lf

设置了 core.autocrlf=false,问题解决了。

综述所述,上述问题可以尝试以下两种方式解决

方式一: 尝试步骤3,4,旧代码和新代码都使用 git仓库托管的。

方式二:git diff --stat 查看实际被修改的文件,如果有 LF will be replaced by CRLF的警告,设置 core.autocrlf=false :任意终端里面执行命令 git config  --global core.autocrlf false即可

6.git clone的文件和 git download的文件大小为什么不一样?

   根据 warning: :LF will be replaced by CRLF以及上面的问题,猜测:git托管的文件在windows上都自动转成了 CRLF(\r\n), git download下来的文件以 LF(\n) 结尾,git download的文件字符较少,所以文件小一些直接把git download下来的文件 复制到 git项目里面,文件以 LF结尾,和git 托管的文件结尾方式不一致,所以 会出现在changes里面。当设置autocrlf=false后,忽略了结尾符号的不同,所以不会出现在changes里面了。

    验证:git Bash里面可以查看到两个文件的换行结尾确实不同,如图 2-3 所示

git clone的文件以  CRLF结尾;git download的文件以  LF结尾

图 2-3

三、总结

1.当你复制文件时,遇到 git changes修改数量超过实际数量(未修改的文件也显示在changes里面),可以尝试以下两种解决方式:

方式一:被复制的文件 和 目标文件 都采用 git clone的 

方式二:git diff --stat 查看实际被修改的文件,如果有 LF will be replaced by CRLF的警告,设置 core.autocrlf=false:任意终端里面执行命令 git config  --global core.autocrlf false即可

        不推荐方式二,因为windows用户编辑文件时会用 CRLF,设置了git托管的代码使用 LF,导致 

CRLF和LF混用,跨平台开发时可能会产生各种奇怪的问题。另外不建议随便设置全局属性,可能会导致其他奇怪的问题,详见二.1描述。

2.git clone的文件 和 git download的文件大小不一样:git 上文件默认都是 以 LF为换行符结尾的(git是国外的软件,国外软件一般都是mac或unix操作系统,以LF结尾);git clone的文件以  CRLF结尾(会默认转换);git download的文件以  LF结尾,后者字符更少,所以文件更小一些。

  

/*

希望对你有帮助!

如有错误,欢迎指正,非常感谢!

*/

相关推荐

  1. Linux文件内容显示

    2024-06-07 14:16:01       38 阅读
  2. excel打开只显示菜单栏内容显示改如何处理

    2024-06-07 14:16:01       30 阅读
  3. Django里面运行非项目文件

    2024-06-07 14:16:01       82 阅读
  4. Android OTG U盘无法显示系统文件管理的修改

    2024-06-07 14:16:01       37 阅读
  5. Android关于手机里面添加运行内存显示

    2024-06-07 14:16:01       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-07 14:16:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-07 14:16:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-07 14:16:01       82 阅读
  4. Python语言-面向对象

    2024-06-07 14:16:01       91 阅读

热门阅读

  1. vue3之基于el-image实现图片预览

    2024-06-07 14:16:01       28 阅读
  2. GUI-demo(不含DB)

    2024-06-07 14:16:01       25 阅读
  3. 技术速递|使用主构造函数重构 C# 代码

    2024-06-07 14:16:01       29 阅读
  4. C#知识|封装典型的SQLServer数据库查询方法。

    2024-06-07 14:16:01       33 阅读
  5. Webpack基本配置

    2024-06-07 14:16:01       26 阅读
  6. 【运维】如何停止某个端口相关的所有服务

    2024-06-07 14:16:01       30 阅读
  7. ES6中如何使用class和extends关键字实现继承?

    2024-06-07 14:16:01       25 阅读
  8. 深耕低代码,技术赋能企业转型业务

    2024-06-07 14:16:01       36 阅读
  9. MySql什么时候表锁or行锁?

    2024-06-07 14:16:01       32 阅读
  10. 聊一下天,分享一下阿赵写技术博客的原因

    2024-06-07 14:16:01       30 阅读
  11. 嵌入式学习——网络编程(TCP)——day31

    2024-06-07 14:16:01       23 阅读