我向存储库添加了一个非常大的文件并提交了它,然后删除了该文件夹并执行了git add -u
. 我遇到的问题是,现在当我尝试推送到远程存储库时,上传那些我已经提交的已删除文件需要很长时间。
有什么方法可以删除文件夹的所有痕迹,这样 repo 就好像该文件夹从未存在并且不尝试上传现在不存在的文件夹?
我试过git clean -f -d
我向存储库添加了一个非常大的文件并提交了它,然后删除了该文件夹并执行了git add -u
. 我遇到的问题是,现在当我尝试推送到远程存储库时,上传那些我已经提交的已删除文件需要很长时间。
有什么方法可以删除文件夹的所有痕迹,这样 repo 就好像该文件夹从未存在并且不尝试上传现在不存在的文件夹?
我试过git clean -f -d
为此,您需要过滤存储库的历史记录(并因此在此提交之后更改所有提交 ID)。
一种方法是使用git filter-branch
过滤掉您不想要的文件。在 GitHub 的删除敏感数据页面上有一个很好的逐步说明(包括一些.gitignore
您可能不需要使用的东西) 。
另一种方法是git rebase -i
在添加错误文件的提交之前简单地对提交进行一次提交,并忽略该提交以及您删除文件所做的提交。
在这两种情况下,您都在本地进行修改,并且(强制)将新版本推送到您的中央存储库并提供给您的协作者。
看看BFG Repo-Cleaner。它正是为此目的而编写的工具。