2011-05-12 35 views
5

問題是,在刪除和推送分支後,它不會永久丟失,並且它仍在存儲庫中。 我已經刪除了大量不必要文件的分支,但只要它仍然在git存儲庫中的某處,git clone命令持續時間太長。如何刪除分支及其引用的所有對象

現在我只看到的是刪除整個存儲庫,並重新創建它,但沒有不必要的分支。

回答

4

我相信git gc --prune=now會做你想做的:從你的倉庫清理不必要的文件。

默認情況下,git gc刪除2周以前的不可訪問的提交,所以添加--prune=now是你所需要的。

+0

+1 git gc確實會清理存儲庫中的鬆散對象。然而,克隆花費大量時間的問題與仍然存在於回購庫中的舊文件修訂有關。 – ralphtheninja

+0

感謝修剪,將編輯我的問題。我不同意,如果被刪除的提交無法訪問(這似乎是這種情況),它們會被'prune'刪除 – CharlesB

+1

原因是reflog,它包含對分支狀態的引用,即使分支已被刪除。 –

3

您需要使用git的過濾分支

http://git-scm.com/docs/git-filter-branch

你可以做很多的魔術用這個命令完全刪除的文件,下面將刪除的文件名從所有提交:

git filter-branch --tree-filter 'rm -f filename' HEAD 
+0

只是好奇:如果提交不見了,因爲分支被刪除,是不是'git gc'把它刪除? – CharlesB

+0

@CharlesB:是的,但你可能想用git gc --prune = now來擺脫所有的數據。但是,這只是本地存儲庫的數據,在克隆時不起作用。看來這個問題是兩折的。 – ralphtheninja

相關問題