如何从git存储库中完全删除文件?
我最近注意到,我的文本编辑器使用的项目文件(以及一些其他垃圾文件)被添加到项目的git存储库中。由于它们实际上不是项目的一部分,我想删除它们,但是如何从git存储库中完全删除文件?,git,Git,我最近注意到,我的文本编辑器使用的项目文件(以及一些其他垃圾文件)被添加到项目的git存储库中。由于它们实际上不是项目的一部分,我想删除它们,但是git rm不会从存储库中删除旧版本,而且我找不到任何其他看起来有希望的工具。您需要的工具是git filter branch。描述了其用法,但基本上: $ git filter-branch --tree-filter 'rm -f my_file' HEAD 将从每次提交中删除“我的文件” 请注意,这会重写每个提交,因此如果您将其推入远程存储库,
git rm
不会从存储库中删除旧版本,而且我找不到任何其他看起来有希望的工具。您需要的工具是git filter branch
。描述了其用法,但基本上:
$ git filter-branch --tree-filter 'rm -f my_file' HEAD
将从每次提交中删除“我的文件”
请注意,这会重写每个提交,因此如果您将其推入远程存储库,您必须(a)强制更新,以及(b)从您处提取的所有其他人现在都将有重复的提交(因为您重写了历史记录),如上所述。这就是
git筛选器分支的用途,但请注意,您的回购历史记录将发生变化,并且在重写历史记录后,提交哈希将不同
如果您还想释放空间,我建议您使用git-forget-blob
,因为仅git-filter-branch
不会使git忘记您的文件,因为它仍然可能被远程设备、reflog、标记等引用
git忘记blob main.c.swp
您可以获得更多信息部分重复,前面的问题肯定会涉及到这一点:我建议添加--prune empty
,这样也会删除结果中生成的任何空提交。对于不同目录中有许多同名文件的存储库,这是如何工作的?它会删除所有同名的文件吗?@CodeMonkey:在这种情况下,您会使用更长、唯一的路径。以后我应该执行git push--force
@mipadi@mipadi,如果我很久以前在本地删除了这些文件呢?(并提交和推送这些删除)在这种情况下,如何从存储库中删除文件?