是否可以撤消由以下命令引起的更改?如果是,怎么办?
git reset --hard HEAD~1
是否可以撤消由以下命令引起的更改?如果是,怎么办?
git reset --hard HEAD~1
当前回答
gitreset-hard-您可以使用它还原一个页面,然后可以再次隐藏或从原始页面中提取所有内容
其他回答
如果你真的很幸运,就像我一样,你可以回到你的文本编辑器,点击“撤销”。
我知道这确实不是一个正确的答案,但它节省了我半天的工作,所以希望它能为其他人做同样的事情!
答案隐藏在上面的详细响应中,您可以简单地执行以下操作:
$> git reset --hard HEAD@{1}
(参见git-relog show的输出)
我刚在错误的项目上做了一个硬重置。拯救我生命的是Eclipse的本地历史。据说IntelliJ Idea也有一个,你的编辑也是如此,值得检查:
关于本地历史的Eclipse帮助主题http://wiki.eclipse.org/FAQ_Where_is_the_workspace_local_history_stored%3F
注意:此答案仅在使用IntelliJ等IDE时有效
我最近遇到了一个类似的问题,我既没有进行改变,也没有做出承诺。可以选择当地历史。我能够从IntelliJ的本地历史还原更改(参考)。
希望这对某人有所帮助。
我知道这是一条古老的线索。。。但随着许多人在寻找如何在Git中撤销这些东西,我仍然认为在这里继续提供提示可能是一个好主意。
当您在gitgui中执行“gitadd”或将任何内容从左上角移动到左下角时,文件的内容存储在一个blob中,文件内容可以从该blob中恢复。
因此,即使文件未提交但必须已添加,也可以恢复该文件。
git init
echo hello >> test.txt
git add test.txt
现在创建了blob,但它被索引引用,因此在重置之前,它不会与git fsck一起列出。所以我们重置。。。
git reset --hard
git fsck
您将得到一个悬空blob ce013625030ba8dba906f756967f9e9ca394464a
git show ce01362
将向您返回文件内容“hello”
为了查找未引用的提交,我在某处找到了一个提示。
gitk --all $(git log -g --pretty=format:%h)
我把它作为gitgui中的工具,它非常方便。