文件没有更改,但git status显示modified

这篇具有很好参考价值的文章主要介绍了文件没有更改,但git status显示modified。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

在windows下编辑某个项目代码时,编辑到一半,需要切换到另一个分支,直接转换会提示当前工作区还有已修改的文件尚未commit,但是当前更改的内容尚未完整,所以还不想commit到仓库中。所以就使用了git stash save命令将当前工作区缓存后,才能切换到其他分支。
但是在checkout回到自己分支使用git stash apply时。发现不能将stash中的内容恢复,报错显示有文件已modified,即使使用girl restore xxx也没办法将文件的modified状态消除。文章来源地址https://www.toymoban.com/news/detail-761207.html

问题排查

  • 首先,因为确认没有对文件做了什么修改,所以我一开始先直接使用git restore命令将文件恢复到上次提交的内容,但是发现没有什么用,文件还是处于modified状态
    git restore example/example.py
    
  • 接着,我使用git diff --summary对比modified文件到底发生了什么变化
    $ git  diff --summary
    mode change 100755 => 100644 example/example.py
    
    根据提示,发现是文件的权限发生了改变,参考中的方式,在git bash中运行了以下命令,但是没起作用,不知道是不是因为是系统是windows的原因
    git diff --summary | grep --color 'mode change 100755 => 100644' | cut -d' ' -f7- | tr '\n' '\0' | xargs -0 chmod +x
    
  • 最后,通过git config --list才发现,config中有一条filemode配置项,该配置项被设置为了true状态
    $ git config --list
    ...
    core.filemode=true
    ...
    
    修改该配置项的值为false, 文件的modified状态消失了。
    git config core.filemode false
    
    这样设置作用范围仅针对当前工作区,如果想要全局生效,则需要添加--global选项
    git config --global core.filemode false
    

总结

  • 先用git diff --summary查看文件具体发生了什么改变
  • 这里是checkout切换后文件权限发生了变化导致的,需要修改git的配置文件,需要设置将文件权限检测功能关闭,即git config core.filemode false;如果需要全局生效,则git config --global core.filemode false
  • 其他类似的,因文件名发生改变导致的需要配置git config core.filename false; 因LF/CRLF原因导致的需要配置git config core.autocrlf false

参考

到了这里,关于文件没有更改,但git status显示modified的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决git文件中没有代码改动但是显示一大堆改动

    .git/config 文件用于配置 Git 仓库的行为。 repositoryformatversion : 用途: 指定 Git 仓库的格式版本。 用法: 此配置项的值是整数,指示 Git 仓库的格式版本。一般情况下,你不需要手动更改这个值,Git 会自动管理。 filemode : 用途: 控制是否跟踪文件的执行权限。 用法: 如果

    2024年01月23日
    浏览(51)
  • git忽略本地文件的修改;撤销本地merge;撤销本地commit

    有些时候在使用微服务的时候有点配置在本地有些修改,但是push的时候又不想push到远端分支上去。这个时候可以让git忽略对这几个文件的跟踪,达到不提交修改内容的效果。 1-查看哪些文件被修改了 2-让git忽略对这些文件的跟踪 3-查看是否忽略成功 4-查看所有被忽略跟踪的

    2024年02月12日
    浏览(57)
  • vscode显示当前打开的文件夹中没有git存储库,但实际上有.git文件夹。

    问题描述:当前打开的文件夹中没有 git 存储库。但实际上有.git文件夹。 解决方案:https://github.com/microsoft/vscode/issues/139598 The only way to make it work is to use the Git: Show Git Output… command. 在vscode的查看–命令面板,输入show git,执行后即可正确出现git 仓库。 如果执行上述命令后,

    2024年02月11日
    浏览(74)
  • Git的基本操作(安装Git,创建本地仓库,配置Git,添加、修改、回退、撤销修改、删除文件)

    Git 是开放源代码的代码托管⼯具,最早是在Linux下开发的。开始也只能应⽤于Linux平台,后⾯慢慢的被移植到windows下,现在,Git可以在Linux、Unix、Mac和Windows这⼏⼤平台上正常运⾏了。 如果你的的平台是centos,安装git相当简单,以我的centos7.6为例: 我们还可以用下面的指令来

    2024年03月28日
    浏览(68)
  • git本地上传后文件夹不显示绿色成功图标

    当我在gitee创建第一个代码仓库时,将代码托管上去,发现本地文件夹未显示绿色成功图标,但是仓库能成功显示上传的代码文件夹。下面是作者解决此问题的方法及步骤。 (1)首先确保有以下两个软件 去官网自行下载对应的安装包即可 提示:必须先安装git,再安装Tortoi

    2024年02月04日
    浏览(55)
  • 【已解决】git pull 显示 Already up-to-date,但文件并没有更新

    流水线跑了几遍,修改的地方没变。。。 查看流水线日志也没发现明显问题。。。 登入服务器一看。。文件没变。。 重新手动pull,还是没变。。。 git status 查看工作目录和暂存区的状态 果然暂存区有东西。。。 放弃所有的缓存 放弃掉所有还没有加入到缓存区(git add)的

    2024年02月12日
    浏览(64)
  • Git--本地修改文件暂存工作区和恢复至工作区

    当克隆一个项目到本地之后,经常需要修改配置文件,那如何做到下次再更新代码,不重复修改配置文件。可通过暂存工作区内容进行恢复。 注意:默认恢复的就是最新一次stash 说明:会展示所有的stash列表 git stash apply 暂存名 说明:通过查看stash列表,把指定的stash记录删除

    2024年02月11日
    浏览(70)
  • git pull报错“您对下列文件的本地修改将被合并操作覆盖”

    现象: 我在有本地更改的情况下,拉取代码时会时常碰到一个error:您对下列文件的本地修改将被合并操作覆盖:详情见下方 error:您对下列文件的本地修改将被合并操作覆盖: 文件具体的路径 请在合并前提交或贮藏您的修改。 终止中 出现该报错的原因: 出现了代码冲突

    2024年02月16日
    浏览(53)
  • 【Git】更改本地仓库的URL

    更新现有的远程仓库URL,使用以下Git命令 remote_name 是你要更改的远程仓库的名称 new_url 是新的远程仓库URL 可以使用以下命令查看当前存储库中已配置的所有远程仓库的名称  如果你要将名为 origin 的远程仓库的URL从 https://github.com/olduser/oldrepo.git 更改为 https://github.com/newuser/

    2024年02月13日
    浏览(29)
  • GIt同时存在传入和传出更改修改,无法合并

    Git是常用的版本管理工具,之前面试被问到过一次——Git有无遇到过使用错误情况?当时卡壳了没答上来,所以这次遇到,特此记录学习。 前一天提交了代码,mt进行了修改。但我忘记拉取最新,就进行了下次修改(主要是格式修改)。所以在提交时便出现了冲突,无法提交

    2024年01月25日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包