今天修改公司项目文件的时候,发现被修改的文件的始终不显示已经被修改。

本来是想要把 KWh 改成 kWh,然后执行 git status 后,没有文件修改记录:

开始分析究竟是因为什么导致的这样诡异的结果:

1. 大小写不敏感?

第一反应是文件对于大小写不敏感了,想到配置 git config。

查询到有这样一条指令 git config ignorecase false 如此指令就是大小写敏感。

依照设置以后,再次执行  git status ,仍然没有文件修改 modified 的提示。

后来查询 ignorecase 这个设置应该是对于 文件名 的大小写敏感,和内容应该没有太大关系。

再次执行 git --unset-all ignorecase 删除掉设置的大小写属性,git config ignorecase true 设置为大小写不敏感,毕竟我们不需要检测文件名的大小写。

2. 文件被忽略了?

既然不是大小写的文件,看来是提交文件被忽略了。查看 .gitignore 文件,发现并没有忽略掉这个文件,更为诡异的是删除了这个文件也不提示错误,但是执行 git checkout -- [FILE_NAME] 却是可以恢复这个文件。

有点抓狂,究竟是什么导致了这样呢?

3.  index 文件被忽略了

遍寻不得要领后,选择git clone 远端仓库的版本,修改同样的文件,竟然可以检测到文件的modified状态 

看来 文件不能被监测到状态变化的原因是 本地仓库被设置了某种奇怪的属性。

但是是什么属性,一时又找不到原因。就暂且放置了,还好远端仓库已经提交了同样的版本。

接着又把 《Git 权威指南》找出来翻看,翻到 Git暂存区 这章节的内容的时候,突发奇想,既然 index 文件是二进制文件,如何查看它的内容呢,于是度娘一番,

git ls-files --stage 可以查看 index 保存的文件索引的内容,既然可以查看内容,

那么 index 中 有没有过滤设定呢?

重点来了,参考博客,执行 git ls-files -v 竟然真的可以看到 那个文件有 h 标记,其他正常追踪的文件是 H 标记。

 git update-index –assume-unchanged –path 可以忽略文件
git update-index –no-assume-unchanged –path 可以取消忽略文件

于是执行  git update-index -no-assume-unchanged [FILE_NAME]

终于,追踪到了文件的修改状态。(擦汗!!!)

参考博客:

[1]. git update-index --assume-unchanged 找出所有被忽略的文件的办法

git 填坑之 git 暂存区忽略文件的更多相关文章

  1. 小丁带你走进git的世界二-工作区暂存区分支

    小丁带你走进git的世界二-工作区暂存区分支 一.Git基本工作流程 1.初始化一个仓库 git  init git  clone git仓库分为两种情况: 第一种是在现有项目或目录下导入所有文件到 ...

  2. Git教程之工作区和暂存区(5)

    工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区:

  3. 【Git】(1)---工作区、暂存区、版本库、远程仓库

    工作区.暂存区.版本库.远程仓库 一.概念 1.四个工作区域 Git本地有四个工作区域:工作目录(Working Directory).暂存区(Stage/Index).资源库(Repository或 ...

  4. git教程:工作区和暂存区

    Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 先来看名词解释. 工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工 ...

  5. Git教程之工作区和暂存区

    工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区:

  6. 版本控制Git(1)——理解暂存区

    一.svn和Git的比较 我们都知道传统的源代码管理都是以服务器为中心的,每个开发者都直接连在中间服务器上, 本地修改,然后commit到svn服务器上.这种做法看似完美,但是有致命的缺陷. 1. 开 ...

  7. git学习笔记 ---工作区和暂存区

    Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 先来看名词解释. 工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工 ...

  8. Git学习(三)——暂存区、远程仓库、增删改管理

    一.工作区和暂存区 工作区(Working Directory) 就是在你的电脑里能看到的目录 版本库(Repository) 工作区中的一个隐藏目录.git,这个不算工作区,而是Git版本库.Git ...

  9. Git学习02 --暂存区,撤销修改,删除文件

    工作区和暂存区概念: 工作区(Working Directory)就是你在电脑里能看到的目录. 版本库(Repository) 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库. Gi ...

随机推荐

  1. Filter过滤器简单学习

    Servlet 过滤器方法 过滤器是一个实现了 javax.servlet.Filter 接口的 Java 类.javax.servlet.Filter 接口定义了三个方法: 序号 方法 & ...

  2. SpringMVC——异常处理

    Spring MVC 通过 HandlerExceptionResolver 处理程序的异常,包括 Handler 映射.数据绑定以及目标方法执行时发生的异常. SpringMVC 提供的 Handl ...

  3. LightOJ 1065 Island of Survival (概率DP?)

    题意:有 t 只老虎,d只鹿,还有一个人,每天都要有两个生物碰面,1.老虎和老虎碰面,两只老虎就会同归于尽 2.老虎和人碰面或者和鹿碰面,老虎都会吃掉对方 3.人和鹿碰面,人可以选择杀或者不杀该鹿4. ...

  4. Linux 下安装tomcat 服务器

    1. 下载tomcat wget http://apache.fayea.com/tomcat/tomcat-7/v7.0.68/bin/apache-tomcat-7.0.68.tar.gz tar ...

  5. 设计模式05: Prototype 原型模式(创建型模式)

    Prototype 原型模式(创建型模式) 依赖关系的倒置抽象不应该依赖于实现细节,细节应该依赖于抽象.对所有的设计模式都是这样的. -抽象A直接依赖于实现细节b -抽象A依赖于抽象B,实现细节b依赖 ...

  6. 求数列中第K大的数

    原创 利用到快速排序的思想,快速排序思想:https://www.cnblogs.com/chiweiming/p/9188984.html array代表存放数列的数组,K代表第K大的数,mid代表 ...

  7. webform Response的一些成员

    1. Response.BufferOutPut,关闭缓冲区. 2. Response.Flush,一次性把缓冲区的内容释放出来. 3. Response.Clear,清空缓冲区. 4. Respon ...

  8. Linux虚拟机安装 nginx (nginx1.9.9)

    1.安装基础环境包(如果已安装,可更新) yum -y :自动选择y yum -y install openssl* yum -y install libjpeg libjpeg-devel libp ...

  9. weblogic启动一闪而过

    点击startWebLogic.cmd的时候,一闪而过 我的原因:JAVA_HOME中的路径是不能带有空格:我的电脑是64位的,jdk(32位)安装路径默认带有空格还有括号,所以重新装jdk,装在没有 ...

  10. 【bzoj4103】[Thu Summer Camp 2015]异或运算 可持久化trie树

    Description 给定长度为n的数列X={x1,x2,...,xn}和长度为m的数列Y={y1,y2,...,ym},令矩阵A中第i行第j列的值Aij=xi xor yj,每次询问给定矩形区域i ...