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

本来是想要把 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. 登录到 SQL Server 实例

    登录到 SQL Server 实例(命令提示符)   登录到 SQL Server 的默认实例 从命令提示符输入以下命令,使用 Windows 身份验证进行连接:     sqlcmd [ /E ] ...

  2. css总结18:HTML 表单和inut各个常用标签

    1 HTML 表单和输入 1.1 HTML 表单介绍 表单是一个包含表单元素的区域. 表单元素是允许用户在表单中输入内容,比如:文本域(textarea).下拉列表.单选框(radio-buttons ...

  3. Java主线程如何等待子线程执行结束(转)

    工作中往往会遇到异步去执行某段逻辑, 然后先处理其他事情, 处理完后再把那段逻辑的处理结果进行汇总的产景, 这时候就需要使用线程了. 一个线程启动之后, 是异步的去执行需要执行的内容的, 不会影响主线 ...

  4. windows环境下安装ZooKeeper

    $.说明 ZooKeeper: ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件. 它是一个为分布式 ...

  5. kali linux之DNS,NTP放大攻击

    DNS放大: 产生大流量的攻击方法-----单机的带宽优势,巨大的单机数量形成的流量汇聚,利用协议特性实现放大效果的流量 DNS协议放大效果----查询请求流量小,但响应流量可能非常巨大(dig AN ...

  6. 八大排序算法的python实现(六)归并排序

    代码: #coding:utf-8 #author:徐卜灵 def merge(left,right): i,j = 0,0 result = [] while i < len(left) an ...

  7. SHELL编程之case与函数

    一.case语句概述 使用case语句改写if多分支可以使脚本结构更加清晰.层次分明 针对变量不同取值,执行不同的命令序列 case语句结构如下: case 变量值  in 模式1) 命令序列1 ;; ...

  8. inspect模块---检查活动对象

    inspect模块提供了一些有用的函数来帮助获取有关活动对象(如模块,类,方法,函数,跟踪,框架对象和代码对象)的信息.例如,它可以帮助您检查类的内容,检索方法的源代码,提取和格式化函数的参数列表,或 ...

  9. Spring核心--IOC&AOP

    Ioc(控制反转) 所谓的控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的.这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转. AOP(面向切面编程) ...

  10. layer mobile开发layer.full

    Layer For Mobile 之 layer.full() 背景介绍:layer mobile是专门针对手机页面开发的一套框架,具体介绍请看官方文档 http://layer.layui.com/ ...