2

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

有什么方法可以删除文件夹的所有痕迹,这样 repo 就好像该文件夹从未存在并且不尝试上传现在不存在的文件夹?

我试过git clean -f -d

4

2 回答 2

4

为此,您需要过滤存储库的历史记录(并因此在此提交之后更改所有提交 ID)。

一种方法是使用git filter-branch过滤掉您不想要的文件。在 GitHub 的删除敏感数据页面上有一个很好的逐步说明(包括一些.gitignore您可能不需要使用的东西) 。

另一种方法是git rebase -i在添加错误文件的提交之前简单地对提交进行一次提交,并忽略该提交以及您删除文件所做的提交。

在这两种情况下,您都在本地进行修改,并且(强制)将新版本推送到您的中央存储库并提供给您的协作者。

于 2013-07-03T03:14:39.953 回答
1

看看BFG Repo-Cleaner。它正是为此目的而编写的工具。

于 2013-07-03T03:56:39.387 回答