Git

顯示舊/過時條目的 git 分支的選項卡完成

  • January 27, 2022

我正在使用一種 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 管道標記了我們所有的建構,即使某些分支將在幾年前發布和/或刪除,這些標記仍然存在。清理遙控器上的舊標籤是這裡的解決方案(這裡有一個指南

引用自:https://unix.stackexchange.com/questions/441442