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

莱莱  金牌会员 | 2024-10-8 14:43:39 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 889|帖子 889|积分 2667

目录
一、题目
二、缘故原由及解决方法
三、总结

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: F 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结尾,后者字符更少,所以文件更小一些。
  
/*
盼望对你有帮助!
如有错误,欢迎指正,非常感谢!
*/

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莱莱

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表