我们的团队意外地将一些个人信息以 H2 数据库文件的形式推送到 Github。有没有办法从服务器中彻底删除文件?
简单地这样做git rm xxx.db
似乎不是答案,因为人们可以轻松地git reset --hard
找到包含用户数据的头部。
另一方面,
git reset --hard [the head before the db file was committed]
也不是我们的偏好,因为自提交数据库以来已经有超过 10 次提交。
我们应该怎么做才能删除该数据库文件?
答案1
阅读 GitHub 帮助删除敏感数据。
运行以下命令删除整个存储库中对该文件的引用 - 这不会删除实际文件本身:
git filter-branch --force --index-filter \ 'git rm --cached --ignore-unmatch <somefile>' \ --prune-empty --tag-name-filter cat -- --all
(确保将其替换
<somefile>
为您要删除的文件的路径。)将文件添加到您的
.gitignore
,然后git add
将git commit
文件添加到.gitignore
。- 运行
git push origin master --force
以获取上游的变更。
还有一些步骤,包括清理存储库和写入 GitHub 本身以便删除缓存的数据。
答案2
除非你做以下任何一件事:
- 删除存储库
- 联系 GitHub
悬而未决的提交仍然可见。因此,如果您可以更改的不仅仅是凭据,请执行上述一些操作。
也可以看看:https://stackoverflow.com/questions/4367977/how-to-remove-a-dangling-commit-from-github