Git
顯示舊/過時條目的 git 分支的選項卡完成
我正在使用一種 frankendebian stretch/sid (我知道,這不是最好的主意;計劃很快重新安裝)。
選項卡完成適用於 git repo 目錄中的 git 分支名稱:
:~/project $ git checkout <TAB><TAB> Display all 200 possibilities? (y or n) :~/project $ git checkout private-rl_<TAB><TAB> private-rl_1219_misspelled_locale_zhtw private-rl_1950_scheduler_offset private-rl_bootstrap_rake_tasks private-rl_1854_ldap_filter_reset private-rl_bootstrap_rake_task
但是它顯示的一些分支不再存在:
:~/project $ git branch * develop private-rl_1219_misspelled_locale_zhtw stable
這也發生在已刪除的遠端分支上。
這裡發生了什麼?git 完成腳本是否保留了可以以某種方式刷新的舊分支的記憶體?如何阻止這些分支在我的製表符完成結果中累積?
我想通了,感謝@PatrickMevzek 的一些溫和刺激:
我看到的分支實際上是對已刪除的遠端分支的引用。要引用上面連結的 SO 執行緒的最佳答案,
$ git remote prune origin
為我修好了。
根據您的設置,還有另一個來源可能看起來像舊的或已刪除的分支 - 您的 git-completion 也可能會建議標籤以及分支。
我最近被這個愚弄了——我們的 CI/CD 管道標記了我們所有的建構,即使某些分支將在幾年前發布和/或刪除,這些標記仍然存在。清理遙控器上的舊標籤是這裡的解決方案(這裡有一個指南。