2017-07-29 201 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

相关问题