Skip to content

[Git] 如何自動刪除已經 merge 以及不再使用的 branch

Published: at 03:05 AM (2 min read)

專案開發久了,不管是在 remote 還是 local 都有很多 branch,有些是已經 merge 的,有些是不再使用的,但當我們在掃 branch 的時候,時常充斥著這些 branch,我們能不能做一些設定調整或者使用指令來刪除這些 branch 呢?

預計要清掉的 branch 類型

1. 已經 merge 到 main/develop 的 branch

# 刪除所有已經 merge 到 main 的 branch 並排除 main 和 develop 及當前 branch
git branch --merged main \
  | grep -vE '^\*| main$| develop$' \
  | xargs git branch -d

💡 同時,可以在 Github 上設定 Automatically delete head branches,這樣在 PR merge 後,Github 會自動幫你刪除 branch。

After pull requests are merged, you can have head branches deleted automatically.

github-automatically-delete-head-branches

2. 刪除在 local 但對不到 remote 的 branch

# 刪除所有在 local 但 remote 上已經不存在的 branch
git branch -vv \
  | grep '\[origin/.*: gone\]' \
  | awk '{print $1}' \
  | xargs git branch -d

3. 清理以上 12 類刪除後在 local 殘留的過時 remote-tracking branch

# 列出預計要刪除的 remote-tracking branch
git remote prune origin --dry-run

# 刪除 remote-tracking branch
git remote prune origin

參考資料


Previous Post
[Leetcode] 29. Divide Two Integers
Next Post
[Leetcode] 28. Find the Index of the First Occurrence in a String