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 標記。

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

於是執行  git update-index -no-assume-unchanged [FILE_NAME]

終於,追蹤到了文件的修改狀態。(擦汗!!!)

參考博客:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM