git重置删除历史记录?

Mat*_*ias 5 git security github

我不小心提交了一些可能是git中的感知信息(仅在本地),我想以简单的方式将其从git历史中删除.将

git reset --soft HEAD~1
Run Code Online (Sandbox Code Playgroud)

然后取消分析感知信息并添加到gitignore足以将其从git历史中完全删除?

Tim*_*eit 5

不,软重置是不够的。这样做会将文件保留在您的索引中(您暂存要提交的文件)。这意味着,该 git 仍在跟踪该文件。

您将需要进行混合重置,这也会取消暂存这些文件。正如 René 指出的那样,删除文件或将其添加到您的文件中也是一个好主意,.gitignore这样您就不会不小心再次提交它。

这足以使敏感信息不会传输到git push.

但是,该信息仍在您的本地存储库中。如果您因意外重置太远而“丢失”提交,git reflog是一个非常有用的工具。

现在清除所有无法通过分支或标签访问的提交:

git reflog expire --expire=1.minute --all
git prune
git gc
Run Code Online (Sandbox Code Playgroud)
  1. 从引用日志中删除所有早于 1 分钟的条目。如果有任何剩余的引用,则不会删除提交。这样的引用可以来自另一个提交、分支、标签以及引用日志。
  2. 删除所有不再可达的提交。
  3. 做一些家政任务。有关更多信息,请查看文档

reflog expire并且prune是破坏性的操作。我建议--dry-run首先使用参数运行这些命令,以查看究竟删除了什么。