科技 · 實用指南
Git 還在呼叫舊憑證助手?分清取消設定與空值重設
刪除一項設定、重設助手清單與清除已存登入資料是不同操作。變更憑證儲存前,先證明實際匹配順序。

移除某處 credential.helper,只會從該設定檔刪除項目。空值助手會在其所在位置重設累計清單,後續匹配項仍能加入。先以不回傳憑證的隔離模擬助手驗證呼叫,再選擇範圍明確的設定修改。
1. 分清三種操作
取消設定 credential.helper,只從指定設定檔移除設定。空值助手會在該位置清空累計助手清單。清除已存登入資料,則要求憑證儲存刪除匹配資料。三者並非同義,變更助手呼叫也不會撤銷伺服器權杖。
記錄確切的 Git 程式與版本、呼叫者、工作儲存庫及去識別的 HTTPS 情境。SSH 驗證走另一條路徑。修改設定前保留副本,不要先刪鑰匙圈項目或重裝憑證管理器。
2. 依順序重建匹配清單
在本機檢查設定來源與範圍。git config --show-origin --show-scope --get-all credential.helper 列出一般項目;也要檢查匹配的 credential.<URL>.helper 區段及被納入的檔案。只回傳一個助手名,不是完整呼叫清單。自訂助手字串可能含敏感資料,分享前須去識別。
依讀取順序列出項目,遇到空值就套用重設。後續匹配的 URL 專用助手能重新加入;較早的則可能被後續重設清除。匹配實際協定、主機並檢查相關路徑政策,不要以哪個名稱看起來更具體來猜呼叫順序。
3. 不讀真實登入資料也能驗證呼叫
我們以 Git 2.51.1/Linux 執行 8 組隔離樣本,使用暫存全域及儲存庫設定,停用系統設定,模擬助手不回傳憑證。助手讀完輸入,只記錄自身標籤和 get 操作。沒有網路請求,也未讀取既有設定、錢包或已存登入資料。
全域 A 加本地 B 依序呼叫 A、B;移除本地 B 後仍有 A。空值重設不呼叫兩者;重設後加 B 只呼叫 B,B 後重設則皆不呼叫。後續匹配 URL 的 C 形成 B、C 順序;把 C 移到重設前只剩 B。最後的命令層級空值重設不呼叫任何助手。所有樣本標準輸出皆空、結束碼 128,因模擬助手刻意不提供登入資料且提示停用;這不是驗證登入的測試。
4. 限定變更範圍,分別驗收
清單找到不需要的繼承項後,選擇目標儲存庫、URL 或單次命令範圍。先重設再加核准助手可取代較早的助手;把重設放在其後會將它也清掉。保留無關情境,別照抄未安裝的示例助手。AWS 明確提醒,系統層級變更會影響其他使用者及儲存庫。
重新核對實際有序設定,再透過核准的憑證機制重跑原操作。助手選擇、取得憑證成功及伺服器授權是三項獨立驗收。唯讀遠端清單能證明讀取權限,不能證明寫入權限。權杖不要放在 URL 或日誌,也不要公開 credential fill 輸出或廣泛追蹤日誌。之後移除重設項可能再暴露繼承助手,因此保留修改前後清單。
