是否可以撤消由以下命令引起的更改?如果是,怎么办?

git reset --hard HEAD~1

当前回答

数字刷新

在列表中找到提交sha,然后将其复制并粘贴到以下命令中:

git cherry pick<the sha>

其他回答

这救了我的命: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。

注意:此答案仅在使用IntelliJ等IDE时有效

我最近遇到了一个类似的问题,我既没有进行改变,也没有做出承诺。可以选择当地历史。我能够从IntelliJ的本地历史还原更改(参考)。

希望这对某人有所帮助。

数字刷新

在列表中找到提交sha,然后将其复制并粘贴到以下命令中:

git cherry pick<the sha>

据我所知,--hard将丢弃未提交的更改。因为git不跟踪这些。但您可以撤消放弃的提交。

$ git reflog

将列出:

b0d059c HEAD@{0}: reset: moving to HEAD~1
4bac331 HEAD@{1}: commit: added level introduction....
....

其中4bac331是丢弃的提交。

现在只需将头部移至该提交:

$ git reset --hard 4bac331