为什么我可以git显示提交我刚刚重置了git?

时间:2014-06-30 14:36:30

标签: git version-control git-log git-reset

我做了一个git commit,但我收录了我不应该拥有的文件 让我们说提交321232323232
这是最重要的提交。我做了git reset --soft HEAD~1 在我做错了提交之前,我可以看到我的文件 当我做git log时,我没有看到错误的提交,但是当我做的时候 git show bad_commit我仍然可以看到变化! 那是为什么?

2 个答案:

答案 0 :(得分:1)

git reset --soft HEAD~1 --soft选项不会影响索引文件或当前工作树,但会保留所有已更改的文件“要提交的更改”。您使用的“重置”将旧磁头复制到.git / ORIG_HEAD,因此您可以通过从其日志消息开始重做提交(使用您想要的任何新文件)。

您可以查看git-reset的git文档(git-scm.com/docs/git-reset)以获取更多信息。

答案 1 :(得分:1)

即使git reset --hard HEAD~1也没有销毁您的提交;它只是从你已知的历史中删除它。因为您的提交由其sha1标识,您仍然可以使用相同的sha标识符找到它。

如果你使用git reflog命令,你可以看到HEAD的位置历史记录,包括你摆脱的提交。这是找到您并不意味着删除旧提交的好方法。

最终(默认情况下,90天后)Git将丢弃这些旧提交。如果由于某种原因您希望尽快删除它们,请查看git reflog文档。