問題描述
我在一個 Wisej.NET 項目中,設置了 .gitignore
文件來忽略編譯產生的 bin
和 obj
文件夾。具體規則如下:
# 忽略 bin 和 obj 文件夾
bin/
obj/
但問題來了:
- Git 命令行 中顯示
.gitignore
規則正常生效。 - TortoiseGit 卻依然將
bin
和obj
文件夾標記為「未版本控制文件」,圖標顯示異常。
這種情況,顯然是 TortoiseGit 狀態緩存 (Status Cache) 引起的問題。
解決方案
經過排查,通過修改 TortoiseGit 的「狀態緩存」設置成功解決了這個問題。以下是具體步驟:
步驟一:打開 TortoiseGit 設置
- 在項目根目錄右鍵,選擇 TortoiseGit → 設置。
- 進入 Icon Overlays(圖標覆蓋)頁面。
步驟二:切換「Status Cache」狀態緩存
找到 Status Cache 選項,默認為 Default
,這可能會使用緩存導致顯示問題。
將其切換為 Shell Extended。
Shell Extended:
強制 TortoiseGit 在文件管理器中即時刷新文件狀態,不使用緩存。
步驟三:刷新文件狀態
- 在倉庫根目錄右鍵,選擇 TortoiseGit → 刷新。
- 若問題依然存在,重啟 Windows 文件管理器 (Explorer):
- 打開「任務管理器 (Ctrl+Shift+Esc)」,找到 Windows Explorer,重新啟動。
步驟四:驗證問題是否解決
- 確保
bin
和obj
文件夾不再顯示為「未版本控制文件」。 - 在命令行中再次驗證
.gitignore
規則是否生效:
git check-ignore -v bin/ obj/
問題原因分析
TortoiseGit 使用狀態緩存來加速顯示文件狀態,但有時緩存不會及時更新,導致 .gitignore
規則已生效但仍顯示錯誤。
將 Status Cache 切換為 Shell Extended,可以強制 TortoiseGit 實時讀取文件狀態,解決緩存問題。
結語
這個問題雖然看似複雜,但其實是 TortoiseGit 的 狀態緩存 設置引起的。只需簡單切換到 Shell Extended 並刷新文件狀態,就能解決問題。
這篇博客希望幫助遇到相同問題的朋友。如果你有其他更好的解決方案,歡迎留言交流!
關鍵詞:TortoiseGit、.gitignore、Status Cache、Shell Extended、狀態緩存
完
Today's comments have reached the limit. If you want to comment, please wait until tomorrow (UTC-Time).
There is 00h44m48s left until you can comment.