假设我在我的git项目中完成了5次提交。
在第4次提交时,我不小心添加了我的credentials.json文件并将其推送到仓库中。
在第5次提交时,我删除了该文件,并进行了一次提交,将此更改推送到仓库中。
目前最新的提交中没有显示该文件。 但是如果用户查看提交历史记录,他可以进入第4次提交并检查我的文件内容。
如何永久删除提交历史记录中的文件,以便看起来从未将该文件添加到仓库中。
注意:
我已经尝试过以下命令:
git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch Credentials.json" \
--prune-empty --tag-name-filter cat -- --all
没有任何错误提示,但该文件未从历史记录中删除。
实际上,该文件位于 /src 文件夹内。 但奇怪的是,当我使用下面的命令(包括完整路径)时:
git filter-branch --force --index-filter "git rm --cached --ignore-unmatch ~full-path/src/Credentials.json" --prune-empty --tag-name-filter cat -- --all
我遇到了错误:~full-path/src/Credentials.json超出了存储库范围。
这是因为在提交5时已经删除了我的文件吗?在这种情况下我该怎么办?
重新创建存储库是唯一的选择吗?
git rm
命令删除该文件。它仍将保留在您的提交历史中,但不会包含任何有效的凭据。我知道之前已经提到过,但还是要再次强调 - 有一些机器人会扫描所有新的提交,寻找凭据,并且它们只需要几毫秒就能够获取它们。稍后从存储库中删除文件并不能解决问题。 - undefined