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