在 Git 中刪除不再位於遠端倉庫中的本地分支

Ashok Chapagai 2022年12月19日
在 Git 中刪除不再位於遠端倉庫中的本地分支

假設你的專案有許多在本地計算機上建立的分支,但在遠端倉庫中不存在。你可以輕鬆刪除與遠端倉庫不同步的所有本地分支,但在此之前,你可能需要檢查本地計算機中可用的所有分支,你可以執行 git branch

現在,要列出所有遠端分支,你可以使用 git branch -r 命令。要在一個命令中實現這兩個結果,你可以使用 git branch -a 命令。確認分支後,你可以繼續閱讀本文的其餘部分。

在 Git 中刪除(修剪)本地分支

你可以輕鬆執行以下命令來修剪不在遠端倉庫上的跟蹤分支。

git remote prune origin

上面的命令會修剪不在遠端倉庫上的跟蹤分支,但是本地分支尚未刪除。要實際刪除本地分支,你可能需要執行以下說明的額外步驟。

  • 列出所有具有詳細輸出的分支,
    git branch -vv
    

    現在,你用管道輸出到 grep 查詢 origin/.* : gone],因為 gone 狀態被置於遠端倉庫中不可用但在本地計算機中可用的分支。

    grep 'origin/.*: gone]'
    
  • 再次將輸出傳送到 awk(這是一個非常好的格式化工具),如下所示。
    awk '{print $1}'
    
  • 最後,你希望將輸出通過管道傳輸到 xargs,當你需要從一個命令獲取輸出並將其用作另一個命令的引數時,可以使用它。你不要將步驟 2 的輸出傳遞給 git branch -d 命令來刪除本地分支,如下所示。
    xargs git branch -d 
    

因此,修剪和刪除遠端倉庫中不可用的所有本地分支的最後兩個線性命令如下。

git remote prune origin

執行上面的命令後,你可能想執行下面的命令來實現刪除遠端倉庫中不可用的本地分支。

git branch -vv | grep 'origin/.*: gone]' | awk '{print $1}' | xargs git branch -d
作者: Ashok Chapagai
Ashok Chapagai avatar Ashok Chapagai avatar

Ashok is an avid learner and senior software engineer with a keen interest in cyber security. He loves articulating his experience with words to wider audience.

LinkedIn GitHub

相關文章 - Git Prune