如果用户意外地提交了文件,请说使用数据库密码的文件,您如何从git存储库中永久删除该文件的所有实例?它仍然需要在开发人员机器上生活,但不在GIT存储库中。
您必须重写包含该文件的所有提交。git filter-branch
将为您提供帮助。
来自git help filter-branch
:
EXAMPLES
Suppose you want to remove a file (containing confidential information or copyright
violation) from all commits:
git filter-branch --tree-filter 'rm filename' HEAD
Using --index-filter with git rm yields a significantly faster version.
git filter-branch --index-filter 'git rm --cached --ignore-unmatch filename' HEAD
当然,如果您已经发布了您的承诺,而其他人则将其克隆过,那么他们仍然将文件放在存储库中,甚至可以将其推入您的存储库,甚至可能会重新引入它。
github有一篇文章,用git解释了该过程。
尝试:
$ bfg --delete-files id_{dsa,rsa} my-repo.git
来源:BFG repo-cleaner网站