是否可以撤消由以下命令引起的更改?如果是,怎么办?
git reset --hard HEAD~1
是否可以撤消由以下命令引起的更改?如果是,怎么办?
git reset --hard HEAD~1
当前回答
我刚在错误的项目上做了一个硬重置。拯救我生命的是Eclipse的本地历史。据说IntelliJ Idea也有一个,你的编辑也是如此,值得检查:
关于本地历史的Eclipse帮助主题http://wiki.eclipse.org/FAQ_Where_is_the_workspace_local_history_stored%3F
其他回答
如果Git尚未垃圾收集,则可以恢复它。
使用fsck获取悬空提交的概述:
$ git fsck --lost-found
dangling commit b72e67a9bb3f1fc1b64528bcce031af4f0d6fcbf
使用rebase恢复悬空提交:
$ git rebase b72e67a9bb3f1fc1b64528bcce031af4f0d6fcbf
注意:此答案仅在使用IntelliJ等IDE时有效
我最近遇到了一个类似的问题,我既没有进行改变,也没有做出承诺。可以选择当地历史。我能够从IntelliJ的本地历史还原更改(参考)。
希望这对某人有所帮助。
如果你真的很幸运,就像我一样,你可以回到你的文本编辑器,点击“撤销”。
我知道这确实不是一个正确的答案,但它节省了我半天的工作,所以希望它能为其他人做同样的事情!
这救了我的命:https://medium.com/@CarrieGuss/如何从数字-数字-设置-b830b5e3f60c中恢复
基本上,您需要运行:
for blob in $(git fsck --lost-found | awk ‘$2 == “blob” { print $3 }’); do git cat-file -p $blob > $blob.txt; done
然后手动完成痛苦,将文件重新组织到正确的结构。
注意:千万不要使用git重置,如果你不能100%理解它的工作原理,最好不要使用它。
您要做的是指定要还原到的提交的sha1
git reset --hard <sha1 of desired commit>
但不要等太久。。。几周后,git将最终看到提交未被引用,并删除所有blob。