如何删除文件夹及其所有历史记录

时间:2015-09-12 09:02:39

标签: git

我添加了一个带图像的文件夹 - 错误 - 但我刚刚意识到这一点。是否有可能从当天开始删除此文件夹而不以任何方式影响其余文件?

2 个答案:

答案 0 :(得分:2)

我不知道您调用了什么文件夹,但这正是您要查找的内容(它假设该文件夹名为img并且仅更新本地历史记录)

git filter-branch --tree-filter 'rm -rf img' --prune-empty HEAD
echo img/ >> .gitignore
git add .gitignore
git commit -m 'Removing images folder from git history'
git gc

注意: git gc清理历史记录中的文件,以便释放他们使用的空间

答案 1 :(得分:2)

  

从当天开始删除此文件夹,而不会以任何方式影响其余文件?

过滤器分支(在leemoanswer中提及)不会“影响”该文件,但会影响回购的历史记录。

您必须执行git push --force才能发布更正,这意味着警告其他协作者将自己的回购重置为新的原始/主分支。

在你做

之前,尺寸不会小
git gc
git repack -Ad      # kills in-pack garbage
git prune           # kills loose garbage

除非您可以访问该服务器并在裸存储库上执行相同的命令,否则它在远程端不会变小:请参阅“Clean up large files on git server”。