2013-12-12 79 views
3

我開始使用(被迫使用)Gerrit,當我的項目已經在進行中時,我使用git push orgin -all將「一切」推送到Gerrit。前一段時間,我發現我也推了一些額外的分支,開始與格里特打之前合併到主站和本地已刪除:在Gerrit中刪除的分支,它仍然存在,在它的Git回購中

$ git branch --all 
* master 
    remotes/oberon/master 
    remotes/origin/96-fix-key-editors-references 
    remotes/origin/master 

我試圖刪除遠程分支,the ususal waygit push origin :remotes/origin/96-fix-key-editors-references),但我被Gerrit拒絕,聲稱我沒有Push特權Force Push選項,這是完成此任務所必需的。因此,我在Gerrit的網絡用戶界面中訪問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. 格里特如何從網絡界面中刪除分支,從Git的回購的同時不刪除呢?

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

我是新來的Git,甚至更新的Gerrit,我可能會失去一些比較流行的東西。對不起!

回答

12

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

此命令將擺脫所有過時遠程跟蹤分支遠程中不復存在:

git fetch origin --prune 
+0

聽起來很合理! :]謝謝... – trejder

4

如果格里特要求,你需要 特權與力推選項,那麼你可以從gerrit容易地給它。 只是去項目>訪問然後 編輯。請參閱屏幕截圖瞭解詳情。 Gerrit home page

+0

感謝您的回答。不幸的是,這種解決方案僅適用於那些有權改變項目權利的人。我沒有。 – trejder

+0

是的你是對的。我希望這會幫助那些有權但不知道如何在gerrit中啓用它的人:) – Sharif

相關問題