2017-07-29 199 views
0

我已經提交併很久以前將大文件夾推送到我的存儲庫中。因此,我有一個非常大的包文件(包含版本庫的歷史記錄)。git從歷史記錄中刪除目錄

我想從存儲庫的歷史記錄中刪除該文件夾,就好像它在.gitignore首先。我想這樣做,而不必從我的本地副本中刪除它。

我發現了這個問題的類似問題,但嘗試了其中一個答案(在一個不是很重要的小文件中),它從我的本地副本中刪除了文件/目錄,這對我的情況並不好。

這裏是我試過的命令:

git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch unwanted_folder' --prune-empty 
git gc --aggressive --prune 

在此先感謝。

+0

@phd Nope。在問這個問題之前試過了。 – AnDrOiD

+0

然後它的副本https://stackoverflow.com/q/24333647/7976758 – phd

回答

1

您將需要重寫整個歷史記錄並將其恢復。 git-filter-branchhttps://git-scm.com/docs/git-filter-branch)做你想做的,但我會考慮使用像BFG這樣的工具:https://rtyley.github.io/bfg-repo-cleaner/

+0

我使用了'git-filter-branch'的變體,但它刪除了本地副本。我希望得到更詳細的答案,並採取一些步驟讓我找到解決方案。 – AnDrOiD

+1

@安德魯 - 在盒子外面思考?將文件夾複製到文件系統的另一個位置,使用git-filter-branch將其刪除,將其添加到.gitignore,然後將文件夾複製回來?如果這是一次操作,那麼手動進行操作應該不會有任何問題。 – PressingOnAlways

+0

試過了,原來它並沒有將它從歷史中刪除。我嘗試的命令被添加到問題中。 – AnDrOiD

相關問題