如何永久删除GIT中存储的文件?

我只是将数据库备份到GIT,以便可以在家用计算机上获取数据库。

我不希望对该文件进行版本控制,这实际上只是一次。

我可以永久删除它,以使GIT无法跟踪它的发展历史或历史吗?

mrblah asked 2020-02-13T04:44:15Z
4个解决方案
92 votes

我总能找到指南:从所有修订提要中完全删除文件很有帮助。

要删除名为Rakefile的文件:

Rakefile

该命令将运行每个分支和标记的整个历史记录,更改任何提交   涉及文件Rakefile,以及之后的所有提交。 提交   之后是空的(因为它们只更改了Rakefile)是   完全删除。

Alan Haggai Alavi answered 2020-02-13T04:44:43Z
27 votes

远程存储库更新:

git filter-branch -f --index-filter "git rm -rf --cached --ignore-unmatch FOLDERNAME" -- --all

将FOLDER NAME替换为您要从给定git存储库中删除的文件或文件夹。

rm -rf .git/refs/original/

git reflog expire --expire=now --all

git gc --prune=now

git gc --aggressive --prune=now

现在将所有更改推送到远程存储库

git push --all --force

这将清理远程存储库。

Andrzej Jozwik answered 2020-02-13T04:45:16Z
3 votes

您也可以轻松使用bfg。

BFG是git-filter-branch的一种更简单,更快的替代方法,用于从Git存储库历史记录中清除不良数据:

删除疯狂的大文件删除密码,凭据和其他私人数据

$ bfg --delete-files YOUR-FILE-WITH-SENSITIVE-DATA

或者只是替换所有出现的文件:

$ bfg --replace-text passwords.txt

检查[https://rtyley.github.io/bfg-repo-cleaner/]和[https://help.github.com/articles/removing-sensitive-data-from-a-repository/]

dezhi answered 2020-02-13T04:45:54Z
1 votes

您可以使用git filter-branch的--index-filter

jamessan answered 2020-02-13T04:46:14Z
translate from https://stackoverflow.com:/questions/2004024/how-to-permanently-delete-a-file-stored-in-git