簡體   English   中英

在Gerrit中刪除了分支,它的Git倉庫仍然存在

[英]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

所以,兩個問題,但實際上是一個:

  1. Gerrit如何從Web UI中刪除分支,而不是在同一時間從Git的repo中刪除它?

  2. 遠程分支如何在列表中列出並在同一時間內不可刪除(不存在)?

我是Git的新手,甚至是Gerrit的新手,我可能會遺漏一些過時的東西。 對不起!

您在git branch --all的輸出中看到的分支名稱是遠程跟蹤分支 ; 它是本地存儲庫中一個特殊的只讀分支,每次獲取時都會與遠程分支同步。 默認情況下,即使分支從遠程分離,git也不會刪除它們,如果你真的不想刪除它們,你就有機會恢復它們。

此命令將刪除遠程中不再存在的任何過時的遠程跟蹤分支:

git fetch origin --prune

如果Gerrit聲稱您需要具有強制推送選項的推送權限,那么您可以輕松地從gerrit中獲取它。 只需轉到項目 > 訪問然后編輯 有關詳細信息,請參閱屏幕截圖。 格里特主頁

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM