2011-05-15 62 views
9

我有一個公開的回購。是否可以清理裸回購?

問題是,我已經使用它很長一段時間,這意味着裸露的回購中有很多垃圾。有無數的死枝,刪除標籤等...

是否有一些命令來清理裸回購?有些像git remote prune適用於相反的情況?

編輯:由於似乎有一些混淆。這是我的設置:

DevelMachine1 
^
    | 
    v 
MainDevelRepo <-> MainRepo -> PublicBareRepo (with a lot of junk) -> The World 
^
    | 
    v 
DevelMachine2 

回答

3

後甚至一些更多的信息:

MainRepo -> PublicBareRepo (with a lot of junk) -> The World 

所以,問題就在這裏。偶爾你會從MainRepo推送到PublicBareRepo,它現在包含不再有效的東西,不應該在那裏。將來,確保你只推動應該在那裏的分支機構。我想,現在最主要的是從它刪除分支,然後我不得不介入回到我原來的答案(假設我們是在談論同一種垃圾)

git push PublicBareRepo :someBranch1 
git push PublicBareRepo :someBranch2 

後一些更多的信息從OP:

看來這是回購設計造成的問題和--mirror是解決這個問題的方法。如果A是開發人員推動他們的主要裸回購,並且如果B是公開裸回購,那麼B應該是帶有--mirror選項的A的克隆。

什麼需要做的是做「git的遠程更新」(假設乙已經是A的鏡像)第B,因此將更新自己,再次是相同的A.


原來的答覆:

如果你想刪除的遠程倉庫的一個分支,你可以這樣做:

git push origin :branchName 

這同樣適用於任何裁判真的,如對於一個標籤:

git push origin :tagName 
+0

如果有二十幾個舊分支怎麼辦?似乎應該有一個單一的命令...'--mirror'可能是最接近的,但它確實太多了。 – Cascabel 2011-05-15 15:10:05

+0

問題是那些分支不在本地存在。另外,簡單地編輯裸回購會更容易,然後調用每個陳舊分支的git push。我在找的東西就像'git remotes prune'那樣會自動完成任務。 – 2011-05-15 15:12:48

+0

我們推標籤嗎?因爲沒有'--tags'?一旦標籤被移除,爲什麼我們甚至關心清理? – manojlds 2011-05-15 15:13:49

3

所有這些非引用的對象應該最終消失,考慮:

因此,即使如果您沒有直接本地訪問遠程裸回購的情況,那麼「使用」它(推送到它)的簡單事實是eno呃在裸回購上觸發gcprune


注:我的答案是在一個偏僻的裸回購的背景下

git remote prune是在進行的操作(你不直接與裸露的回購,你是推到它的工作)當地回購(非裸之一,在那裏你取一些遠程分支機構,並有很多remotes/*命名空間下的跟蹤分支說當地回購)

清潔遠程(裸這裏)回購是指推動:refsMagnus Skoghis answer中所述。
如果當前本地回購「DevelMachinex」不存在這些裁判,那麼就不是真正的沒有其他解決辦法:

  • 克隆--mirror遠程裸回購「MainDevelRepo」(你會得到所有這些陳舊的分支機構本地遠程跟蹤分支)
  • 刪除分支機構本地
  • push --mirror,因爲the documentation未提到「刪除裁判會從遠端刪除」。
+0

我想OP的意思是遠程有陳舊的分支,以及一些他不想再想要的標籤,所以他想做一些推 - 刪除操作來刪除遙控器上不在他當地回購的參考資料。 (比如'push --mirror',只有頭部和標籤除外......不幸的是,你不能像'git push --delete --all; git push --all'那樣做。) – Cascabel 2011-05-15 15:01:03

+0

請閱讀實際上'git remotes prune'是什麼。你所描述的與這個問題完全無關。 – 2011-05-15 15:04:23

+0

@Let_Me_Be - 你的意思是'git remote prune'。我想你應該在請某人閱讀之前正確使用它。 – manojlds 2011-05-15 15:14:55