我向存储库添加了一个非常大的文件并提交了它,然后删除了该文件夹并执行了git add -u
。我遇到的问题是,现在当我尝试推送到远程存储库时,上传已提交的已删除文件需要花费太长时间。
有没有办法删除该文件夹的所有痕迹,以便repo的行为就像该文件夹从未存在过,并且不会尝试上传现在不存在的文件夹?
我尝试了git clean -f -d
答案 0 :(得分:4)
您需要过滤存储库的历史记录(因此在此提交后更改所有提交ID)才能执行此操作。
执行此操作的一种方法是使用git filter-branch
过滤掉您不想要的文件。在GitHub的Remove Sensitive Data页面上有一个很好的分步(包括你可能不需要的一些.gitignore
内容)。
另一种方法是在添加坏文件之前简单地对提交执行git rebase -i
,并省略它和删除文件的提交。
在这两种情况下,您都可以在本地进行修改,并且(强制)将新版本推送到您的核心仓库,并将其提供给您的协作者。
答案 1 :(得分:1)
查看BFG Repo-Cleaner。这是为了这个目的而编写的工具。