软重置后返回最新提交

Sha*_*ade 3 git git-reset

我知道有人已经问过这个问题,但没有人提供帮助我的解决方案。

我使用 GitKraken,它显然没有用于检查历史中较旧提交的集成功能(我必须测试一下,没有进行任何更改)。我现在知道我应该使用git checkout HEAD~n而是使用软重置。所以 GitKraken 仍然显示我的更改在那里并且在我重置的更改之后出现。但是我怎样才能回到我最近的提交呢?退房也不起作用。

我不确定 GitKraken 是否只是显示错误,但 Git 告诉我我重置的提交是当前的 HEAD。似乎是正确的。

有什么方法可以恢复以下提交或将它们设置为 HEAD?

编辑重复标签:引用的线程是关于通过检查以前的提交来返回它的预期方式(我没有这样做)。由于我进行了软重置,因此我的主分支的 HEAD 不再是实际的最新提交,而是我将本地存储库重置为的那个。git reflog与重置一起使用有助于撤消已完成的操作。

Rom*_*eri 9

从分支的reflog获取它。

git reflog [显示] [日志选项] [<ref>]

所以在你的情况下

git reflog branch-to-be-fixed
Run Code Online (Sandbox Code Playgroud)

它将输出分支上先前操作的列表

59a04ab96 要修复的分支@{1}:提交:...消息...

574c5ca23 要修复的分支@{2}:提交:...消息...

此时,根据其消息或哈希在输出中发现您需要的提交,并使用句柄重置为您想要的状态:

git reset --hard branch-to-be-fixed@{1}
Run Code Online (Sandbox Code Playgroud)

  • 你确实需要小心。例如,如果您签出一个分支,`reset --hard` 将移动该分支并可能删除该分支指向的任何提交。`reset` 真的是为了移动分支并且该死的后果。如果你不小心,它会让你陷入很多困难。`checkout` **很多**更安全 (3认同)
  • `git checkout HEAD` 没问题。使用 `reset --hard` 是使用蒸汽锤打开鸡蛋 (2认同)