關於 Git 刪除 Remote Branch

今天同事問到為什麼從 Git Server 上刪除 branch 後,local 還是看得到被刪除的 branch,仔細想想我好像沒有這樣操作過,所以做了幾個實驗,提供參考

問題描述

  1. Git Server 上有兩個 branch:developmaster

  2. 刪除 develop 後,local 還是看得到 remotes/origin/develop

    1deleted

    2local

  3. 使用 fetch 指令,狀況依舊

解決方式

  1. 由 local 刪除遠端 branch

    git push origin :develop

    • 當前目錄的 remotes/origin/develop 就會一併被刪除

      3localdelete

    • 其他目錄或是電腦仍然有相同問題

  2. 使用 fetch 指令進行修正

    • 2-1. git fetch -p

      5fetchp

    • 2-2. git fetch –all –prune

      4prunall

    • 參數說明

      • --all

        針對所有的 remote 進行 fetch

      • -p or --prune

        執行 fetch 前,將遠端不存在的參考都移除

心得

Git 功能好多呀,指令也好多,最近同事常常會問出我從來沒想過的情境,讓我多了不少思考跟找指令的機會,也讓我聯想到其實我似乎沒有寫程式的天份,我怎麼都不會想到同事們會想到的情境,難道我該轉換跑道了嗎 XD

參考資訊

  1. git-fetch
  2. fetch from origin with deleted remote branches?
  3. How do I delete a Git branch both locally and remotely?