git commit --amend 是否完全覆盖旧提交?

Den*_*Den 4 git

到本地存储库,我不小心提交了一个包含密码的文件,该文件不应该公开(这是为了懒惰的测试目的......)。

我用密码再次保存了文件,并用于git commit --amend再次提交文件。密码现在是永久消失了还是可以在存储库中的某个位置找到它?

Lek*_*eyn 8

如果您git push在修改之前没有对远程存储库执行过操作,则该提交在该远程存储库中不可用。将来也不会推送。

但是,您的本地存储库仍包含旧提交,您可以通过运行git reflog.

然后可以使用以下命令显示实际(旧)提交:

git show HEAD@{1}
Run Code Online (Sandbox Code Playgroud)

(假设您提交了一些内容,然后在没有进一步提交/分支切换的情况下对其进行了修改)

要在本地摆脱该提交,您应该查看git gc. 当您按原样运行它时,它将删除具有特定年龄的旧的、悬空的提交。

  • `git reflog expire --all --expire-unreachable=0 && git gc --aggressive --prune=now` 对我有用。归功于 http://www.ducea.com/2012/02/07/howto-completely-remove-a-file-from-git-history/ (2认同)