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

本来是想要把 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. Entity Framework 6.0 Tutorials(6):Transaction support

    Transaction support: Entity Framework by default wraps Insert, Update or Delete operation in a trans ...

  2. (转)Entity Framework 5.0系列之自动生成Code First代码

    原文地址:http://www.cnblogs.com/kenshincui/archive/2013/08/29/3290527.html 在前面的文章中我们提到Entity Framework的“ ...

  3. [Lua快速了解一下]Lua的控制语句

    -Lua中没有++或者--的骚操作 -while loop sum = num = do sum = sum + num num = num + end print("sum =" ...

  4. 完美解决bootstrap模态框允许拖动后拖出边界的问题

    使用bootstrap3版本 在网上看了很多方法,我觉得jquery-ui的实现方法是最简单有效的,具体实现方法 1.下载并引入jquery-ui插件 2.全局添加模态框允许拖动事件 $(docume ...

  5. if 判断

    语法一: if 条件: #条件成立时执行的字代码块 代码1 代码2 代码3 示例: sex='female' age=18 is_beautiful=True if sex == 'female' a ...

  6. jQuery插件扩展extend的实现原理

    相信每位前端的小伙伴对jQuery都不陌生吧,它最大的魅力之一就是有大量的插件,去帮助我们更轻松的实现各种功能. 前几天晚上,闲来无事,就自己动手写了个简单的jQuery插件,功能很简单,只是让选定的 ...

  7. 浅谈短视频APP的发展趋势

    2014年6月20日,在AppAnnie最新发布5月应用指数中,美拍荣登“非游戏类iOS榜单”全球下载量第一位置,成为全球iOS应用商店最热门APP.能在<AppAnnie应用指数>这份A ...

  8. C# Excel 操作

    Excel数据到datagridview 里面 (流读取) System.Windows.Forms.OpenFileDialog fd = new OpenFileDialog(); if (fd. ...

  9. $(this)在ajax里面不生效的探究

    第一个箭头时, 如果没有将$(this) 赋值给 _this ,那么$(this)就无法在ajax方法里面使用. 应该是应为他们属于不同的域. 赋值给_this的话, 就类似于全局变量

  10. android android studio

     android studio 一.安装及步骤: Android Studio安装: java jdk安装: jdk环境变量配置: 二.遇到的问题: 1.缺少jvm或java jdk路径不对,请指定正 ...