[英]'git branch -a' still showing deleted remote branch in the remote repo?
[英]Deleted branch in Gerrit and it is still there, in its Git repo
我開始使用(被迫)Gerrit,當我的項目已經進行中時,所以我使用git push orgin -all
將“一切”推送到Gerrit。 前段時間,我注意到我還推了一些額外的分支,在開始使用Gerrit之前合並到master中並且已經在本地刪除了:
$ git branch --all
* master
remotes/oberon/master
remotes/origin/96-fix-key-editors-references
remotes/origin/master
我試圖刪除那個遠程分支, 這是一種因果關系 ( git push origin :remotes/origin/96-fix-key-editors-references
),但我被Gerrit拒絕了,聲稱我沒有使用Force Push
Push
特權選項,完成此任務所需的選項。
所以,我去了Gerrit的Web UI中的Project > Branches
,標記了該分支並且能夠刪除它,通過按下Delete
按鈕(有趣的是:我可以在UI中執行某些操作,我通過SSH禁止了什么?)。
我認為案件已經結束,直到我再次執行git branch --all
,才發現,Git仍然報告分支remotes/origin/96-fix-key-editors-references
為現有(結果與上面完全相同)。
我再次使用git push origin :remotes/origin/96-fix-key-editors-references
,只是為了滿足我的好奇心,現在會發生什么,我收到錯誤消息說error: unable to delete '96-fix-key-editors-references': remote ref does not exist
。
所以,兩個問題,但實際上是一個:
Gerrit如何從Web UI中刪除分支,而不是在同一時間從Git的repo中刪除它?
遠程分支如何在列表中列出並在同一時間內不可刪除(不存在)?
我是Git的新手,甚至是Gerrit的新手,我可能會遺漏一些過時的東西。 對不起!
您在git branch --all
的輸出中看到的分支名稱是遠程跟蹤分支 ; 它是本地存儲庫中一個特殊的只讀分支,每次獲取時都會與遠程分支同步。 默認情況下,即使分支從遠程分離,git也不會刪除它們,如果你真的不想刪除它們,你就有機會恢復它們。
此命令將刪除遠程中不再存在的任何過時的遠程跟蹤分支:
git fetch origin --prune
如果Gerrit聲稱您需要具有強制推送選項的推送權限,那么您可以輕松地從gerrit中獲取它。 只需轉到項目 > 訪問然后編輯 。 有關詳細信息,請參閱屏幕截圖。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.