撤销 git reset --hard origin/master

16

在本地主分支上工作:

git commit -m "Lots of important commits"
git reset --hard origin/master

如何检索因git重置(从远程)而丢失的提交?

编辑:请注意,这不是关于检索未提交的更改。


你无法从远程代码仓库拉取该代码,你只是将其提交到了本地代码仓库,然后重置到了远程代码仓库。该代码从未推送到远程仓库。在进行强制重置之前,我尝试始终创建一个名为“temp”的分支,以便在意识到需要这些提交时有某种引用它们的东西。 - Turch
1
你基本上是无法解决的。 - sjagr
2
不是重复的那个,因为这个例子试图恢复提交,而不是未提交的更改。 - Raul Nohea Goodness
@Turch 抱歉刚才那样说,我的意思是如何检索提交,以作为我从远程存储库错误拉取的结果。 - chrisjleu
1个回答

50

如果您已经提交了更改,那么并没有丢失任何内容。

如果您有提交的引用,只需使用git reset --hard<sha>来回到该特定提交。

如果您没有提交的引用,您可以始终使用git reflog来检索在执行硬重置之前的SHA。

例如,如果git reset --hard origin/master是您运行的最后一条命令,则可以执行以下操作:

git reset HEAD@{1}

奇怪的是,这个方法半成功了,因为它找回了我已经提交但丢失的文件,但没有找回包含该文件的目录(所以我不得不手动重新创建目录)。 - stevec

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接