在将新提交推送到上游存储库时,出现一个错误,我需要在推送之前先进行新的更改,但这会导致丢失一些更改。
我执行的命令是:
git reset --hard HEAD @ {12}
答案 0 :(得分:1)
列出执行git reset --hard之前的可能状态(在本例中为git reset --hard HEAD @ {12})。
除12次提交(可恢复)外,关于您的其他更改:
您刚刚进行了更改,但没有执行git add
或git commit
。
恢复:您无法恢复那些更改,因为它在git记录中不存在。不过,您可以尝试IDE本地备份副本(对于intellij:https://blog.jetbrains.com/idea/2008/01/using-local-history-to-restore-deleted-files/)。
您刚刚使用git add
添加了它,但没有提交它。
恢复:不保证,但是您可以尝试恢复。
先前已上演的更改(git add)应该可以从索引对象中恢复,因此,如果这样做了,请使用git fsck --lost-found查找与之相关的对象。 (这会将对象写入.git / lost-found /目录;从那里可以使用git show查看每个文件的内容。) 如果幸运的话,您的IDE进行了备份,则可以检查IDE是否挽救了您的生命(intellij:https://blog.jetbrains.com/idea/2008/01/using-local-history-to-restore-deleted-files/)。
您使用git commit
恢复:是的,在这种情况下,您可以恢复。使用:
git reflog
获取提交的提交哈希。 然后使用:
git reset --hard <commit-retrieved-using-reflog>