git 填坑之 git 暂存区忽略文件
今天修改公司项目文件的时候,发现被修改的文件的始终不显示已经被修改。
本来是想要把 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 找出所有被忽略的文件的办法
最新文章
- PHP如何自动识别第三方Restful API的内容,自动渲染成 json、xml、html、serialize、csv、php等数据
- Sql server之路 (六)上传服务器图片
- mysql添加索引
- 까페24 호스팅 php 에러메세지 출력
- 【POJ】2828 Buy Tickets
- ParseChat应用源码ios版
- HOOK API (一)——HOOK基础+一个鼠标钩子实例
- winXP JDK由1.8改为1.6
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(十) Configuration Application Block
- java reflect反思总结
- 语音频谱语音信号处理之(四)梅尔频率倒谱系数(MFCC)
- 学习笔记之09小练习题(js:从小到大输出三个任意数,查成绩,相亲题,查体重,一元二次方程求根)
- 谈谈promise
- ORM系列之Entity FrameWork详解
- Nodejs一键实现微信内打开网页url自动跳转外部浏览器访问的功能
- C# Asp.net中简单操作MongoDB数据库(一)
- Microsoft SQL - 操作语句
- map里面的set方法
- Python常见十六个错误集合,你知道那些?
- nth-digit