restore-Git-我们可以恢复已删除的提交吗?

这个问题已经在这里有了答案:

  • 如何恢复在Git中丢失的提交?                                     3个答案

我很惊讶,在SO上找不到答案。

我们可以在git中恢复/恢复已删除的提交吗?

例如,这就是我所做的:

# Remove the last commit from my local branch
$ git reset --hard HEAD~1

# Force push the delete
$ git push --force

现在,是否有办法找回已删除的提交? git是否在内部记录(记录)删除?

Atri asked 2020-01-07T22:23:24Z
3个解决方案
122 votes

要返回到该提交,可以使用reflog查找其引用。

参考日志或“ reflogs”记录分支的提示和   其他参考已在本地存储库中更新。

运行以下命令:

git reflog

扫描前几项,并找到丢失的提交。 跟踪该提交的标识符(可以使用第一列或第二列)。 我们将标识符称为“ ID”。

如果自从进行重设-硬以来没有做任何额外的工作,则可以执行以下操作:

git reset --hard ID
git push -f origin master

如果自重设以来您还进行了其他工作,则可以像下面这样重新选择分支:

git cherry-pick ID
git push origin master
Jonathan.Brink answered 2020-01-07T22:24:05Z
14 votes

是的,您可以在reflog中找到您的提交,请使用:

git reflog

以显示所有/已经在您的存储库中创建的提交-在此之后,您应该通过checkout命令检出以删除提交

git checkout <your commit-SHA>

或通过以下方式挑选它:

git cherry-pick <your commit-SHA>
Konrad Krakowiak answered 2020-01-07T22:24:34Z
4 votes

尝试使用git reflog(又称为参考日志),它可以让您返回本地存储库中的历史记录。

[https://git-scm.com/docs/git-reflog]

Parano answered 2020-01-07T22:24:58Z
translate from https://stackoverflow.com:/questions/34751837/git-can-we-recover-deleted-commits