Git - Can we recover deleted commits?

GitRestoreGit Commit

Git Problem Overview


I am surprised, I couldn't find the answer to this on SO.

>Can we recover/restore deleted commits in git?

For example, this is what I did:

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

# Force push the delete
$ git push --force

Now, is there a way to get back the commit which was deleted? Does git record(log) the delete internally?

Git Solutions


Solution 1 - Git

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

Solution 2 - Git

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>

Solution 3 - Git

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAtriView Question on Stackoverflow
Solution 1 - GitJonathan.BrinkView Answer on Stackoverflow
Solution 2 - GitKonrad KrakowiakView Answer on Stackoverflow
Solution 3 - GitChaoyuView Answer on Stackoverflow