EKsumic's Blog

let today = new Beginning();

Click the left button to use the catalog.

OR

TortoiseGit 忽略規則不生效?切換「狀態緩存」解決問題!

問題描述

我在一個 Wisej.NET 項目中,設置了 .gitignore 文件來忽略編譯產生的 binobj 文件夾。具體規則如下:

# 忽略 bin 和 obj 文件夾
bin/
obj/

但問題來了:

  1. Git 命令行 中顯示 .gitignore 規則正常生效。
  2. TortoiseGit 卻依然將 binobj 文件夾標記為「未版本控制文件」,圖標顯示異常。

這種情況,顯然是 TortoiseGit 狀態緩存 (Status Cache) 引起的問題。


解決方案

經過排查,通過修改 TortoiseGit 的「狀態緩存」設置成功解決了這個問題。以下是具體步驟:


步驟一:打開 TortoiseGit 設置

  1. 在項目根目錄右鍵,選擇 TortoiseGit → 設置
  2. 進入 Icon Overlays(圖標覆蓋)頁面。

步驟二:切換「Status Cache」狀態緩存

找到 Status Cache 選項,默認為 Default,這可能會使用緩存導致顯示問題。
將其切換為 Shell Extended

Shell Extended
強制 TortoiseGit 在文件管理器中即時刷新文件狀態,不使用緩存。


步驟三:刷新文件狀態

  1. 在倉庫根目錄右鍵,選擇 TortoiseGit → 刷新
  2. 若問題依然存在,重啟 Windows 文件管理器 (Explorer)
    • 打開「任務管理器 (Ctrl+Shift+Esc)」,找到 Windows Explorer,重新啟動。

步驟四:驗證問題是否解決

  • 確保 binobj 文件夾不再顯示為「未版本控制文件」。
  • 在命令行中再次驗證 .gitignore 規則是否生效:
git check-ignore -v bin/ obj/

問題原因分析

TortoiseGit 使用狀態緩存來加速顯示文件狀態,但有時緩存不會及時更新,導致 .gitignore 規則已生效但仍顯示錯誤。

Status Cache 切換為 Shell Extended,可以強制 TortoiseGit 實時讀取文件狀態,解決緩存問題。


結語

這個問題雖然看似複雜,但其實是 TortoiseGit 的 狀態緩存 設置引起的。只需簡單切換到 Shell Extended 並刷新文件狀態,就能解決問題。

這篇博客希望幫助遇到相同問題的朋友。如果你有其他更好的解決方案,歡迎留言交流!


關鍵詞:TortoiseGit、.gitignore、Status Cache、Shell Extended、狀態緩存


This article was last edited at 2024-12-17 10:19:42

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.