从git repo中删除文件夹的所有痕迹

时间:2013-07-03 03:08:59

标签: git

我向存储库添加了一个非常大的文件并提交了它,然后删除了该文件夹并执行了git add -u。我遇到的问题是,现在当我尝试推送到远程存储库时,上传已提交的已删除文件需要花费太长时间。

有没有办法删除该文件夹的所有痕迹,以便repo的行为就像该文件夹从未存在过,并且不会尝试上传现在不存在的文件夹?

我尝试了git clean -f -d

2 个答案:

答案 0 :(得分:4)

您需要过滤存储库的历史记录(因此在此提交后更改所有提交ID)才能执行此操作。

执行此操作的一种方法是使用git filter-branch过滤掉您不想要的文件。在GitHub的Remove Sensitive Data页面上有一个很好的分步(包括你可能不需要的一些.gitignore内容)。

另一种方法是在添加坏文件之前简单地对提交执行git rebase -i,并省略它和删除文件的提交。

在这两种情况下,您都可以在本地进行修改,并且(强制)将新版本推送到您的核心仓库,并将其提供给您的协作者。

答案 1 :(得分:1)

查看BFG Repo-Cleaner。这是为了这个目的而编写的工具。