我不小心在 git 中提交了一些敏感信息(仅在本地),我想以一种简单的方式将其从 git 历史记录中删除。将
git reset --soft HEAD~1
然后取消暂存敏感信息并添加到 gitignore 是否足以将其从 git 历史记录中完全删除?
最佳答案
不,软重置是不够的。 这样做会将文件保留在您的索引中(您暂存要提交的文件的位置)。这意味着,git 仍在跟踪文件。
您将需要进行混合重置,这也会取消暂存这些文件。正如 René 指出的那样,删除文件或将其添加到您的 .gitignore
也是一个好主意,这样您就不会不小心再次提交它。
这就足够了,所以敏感信息不会传输到 git push
上的远程服务器。
但是,该信息仍在您的本地存储库中。如果您因不小心重置太多而“松散”了一个提交,git reflog是一个非常有用的工具。
现在清除所有无法通过分支或标记访问的提交:
git reflog expire --expire=1.minute --all
git prune
git gc
- 从 reflog 中删除所有早于 1 分钟的条目。如果有任何剩余的引用,提交将不会被删除。这样的引用可以来自另一个提交、分支、标记以及引用日志。
- 删除所有不再可达的提交。
- 做一些家务活。有关更多信息,请查看 documentation
reflog expire
和prune
是破坏性操作。我建议首先使用 --dry-run
参数运行这些命令,以查看究竟删除了什么。
关于git - git reset 会删除历史记录吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32175441/