1. 獲取遠程分支列表
首先,確保你獲取了遠程倉庫的最新分支信息:
git fetch -p
-p
?參數會自動清理本地倉庫中那些在遠程已經被刪除的分支的引用。
2. 查看本地分支與遠程分支的對比
運行以下命令來查看哪些本地分支沒有對應的遠程分支:
git branch -vv
輸出示例:
main abc1234 [origin/main] Commit message
dev def5678 [origin/dev] Commit message
feature cde9012 [stale] Commit message
其中?[stale]
?表示該分支在遠程已經不存在。
這里 :gone 也表示不存在:
使用以下命令查看所有本地分支和遠程分支:
git branch -a
?
3. 手動刪除單個或多個本地分支
如果你只想刪除某些特定的本地分支(例如?feature
),可以使用以下命令:
git branch -d feature
如果分支沒有合并過,Git 會提示你使用?-D
?來強制刪除:
git branch -D feature
4. 自動刪除所有遠程已刪除的本地分支
如果你想一次性刪除所有遠程已經刪除的本地分支,可以使用以下命令:
git for-each-ref --format='%(refname:short) %(upstream:track)' refs/heads | awk '$2 == "[gone]" {print $1}' | xargs git branch -d
這個命令的作用是:
- 列出所有本地分支及其跟蹤狀態。
- 使用?
awk
?過濾出那些遠程分支已經不存在的本地分支。 - 然后通過?
xargs
?刪除這些分支。
注意:如果你希望強制刪除未合并的分支,請將?
git branch -d
?替換為?git branch -D
。?
?