我如何从git源控件中完全删除文件,包括所有过去的提交



如果用户意外地提交了文件,请说使用数据库密码的文件,您如何从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网站

最新更新