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 找出所有被忽略的文件的办法
git 填坑之 git 暂存区忽略文件的更多相关文章
- 小丁带你走进git的世界二-工作区暂存区分支
小丁带你走进git的世界二-工作区暂存区分支 一.Git基本工作流程 1.初始化一个仓库 git init git clone git仓库分为两种情况: 第一种是在现有项目或目录下导入所有文件到 ...
- Git教程之工作区和暂存区(5)
工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区:
- 【Git】(1)---工作区、暂存区、版本库、远程仓库
工作区.暂存区.版本库.远程仓库 一.概念 1.四个工作区域 Git本地有四个工作区域:工作目录(Working Directory).暂存区(Stage/Index).资源库(Repository或 ...
- git教程:工作区和暂存区
Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 先来看名词解释. 工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工 ...
- Git教程之工作区和暂存区
工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区:
- 版本控制Git(1)——理解暂存区
一.svn和Git的比较 我们都知道传统的源代码管理都是以服务器为中心的,每个开发者都直接连在中间服务器上, 本地修改,然后commit到svn服务器上.这种做法看似完美,但是有致命的缺陷. 1. 开 ...
- git学习笔记 ---工作区和暂存区
Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 先来看名词解释. 工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工 ...
- Git学习(三)——暂存区、远程仓库、增删改管理
一.工作区和暂存区 工作区(Working Directory) 就是在你的电脑里能看到的目录 版本库(Repository) 工作区中的一个隐藏目录.git,这个不算工作区,而是Git版本库.Git ...
- Git学习02 --暂存区,撤销修改,删除文件
工作区和暂存区概念: 工作区(Working Directory)就是你在电脑里能看到的目录. 版本库(Repository) 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库. Gi ...
随机推荐
- jquery.parser.js 的 parseOptions 方法
// target 是DOM元素 // properties 是宿主的属性 $.parser.parseOptions(target,properties); /** * parse options, ...
- Load-time relocation of shared libraries
E原文地址:http://eli.thegreenplace.net/2011/08/25/load-time-relocation-of-shared-libraries/ This article ...
- Hadoop安装所遇问题及解决方法
1.错误:java.io.IOException: File /hadoop/hadooptmp/mapred/system/jobtracker.info could only be replica ...
- /dev/null 位桶
把/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和脚本都非 ...
- window7 Oracle卸载步骤
完全卸载oracle11g步骤:1. 开始->设置->控制面板->管理工具->服务(或 运行 services.msc) 停止所有Oracle服务.2. 开始->程序-& ...
- XML在C#与Unity3D中的实战运用
一.xml文件是什么? XML是指可扩展标记语言,英文:Extensible Markup Language的缩写. 二.xml文件有什么用? 用来传输和存储数据,比如网络通信,本地配置文件等. 三. ...
- Highsoft.Highcharts 5.0.6439.38401 key
Highcharts .NET allows developers to make charts using Highcharts API with the Microsoft .NET Framew ...
- VS Code 运行html文件
用VS Code编写html文件,想在VS Code中直接打开运行,配置如下: 配置tasks.json 打开VS Code,点击"终端",选择"配置任务". ...
- C# 调接口
上一个项目,需要mvc管理后台调接口项目,以便后期的重构扩展,调研后发现后台用的ajax请求,直接调接口可能会有跨域问题,最终在c#代码中实现了这个需求. 1,Ajax请求后台 将接口所需参数传入 2 ...
- linux 虚拟机 安装 php-7.0.2
1.安装依赖包 yum -y install libxml2 libxml2-devel openssl openssl-devel libjpeg libjpeg-devel libpng libp ...