Git-我们能恢复已删除的提交吗?

我很惊讶,我找不到这个问题的答案。

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

例如,我就是这么做的:

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


# Force push the delete
$ git push --force

现在,是否有一种方法可以恢复被删除的提交? git 是否在内部记录(记录)删除?

100108 次浏览

Yes, You can find your commit in reflog use:

git reflog

to display all commits which are/were created in your repository - after this you should checkout to removed commit by checkout command

git checkout <your commit-SHA>

or cherry-pick it by:

git cherry-pick <your commit-SHA>

Try git reflog, aka Reference logs, it allows you to go back to history in your local repo.

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

To get back to that commit you can use the reflog to look up it's ref.

Reference logs, or "reflogs", record when the tips of branches and other references were updated in the local repository.

Run this command:

git reflog

Scan the first few entries, and find the commit that was lost. Keep track of the identifier to that commit (you can use either the 1st or 2nd columns). Let's call the identifier "ID".

If you have not made any extra work since you did the reset --hard you can do:

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

If you have made other work since the reset, you could cherry-pick if back onto your branch like this:

git cherry-pick ID
git push origin master