How can I recover from an accidental git push -f?
Try this:
Connect to the remote over SSH.
Make a backup of the entire remote repository.
tar cvzf project-backup.tgz /path/to/project.git
If you know at least the first few characters of
bbbbbbb
, usegit show bbbbbb
and/orgit log bbbbbb
to find out the full commit hash. (If you need only the hash,git rev-parse bbbbbb
will also work, but it's always better to check.)If you don't know the value at all, run
git fsck
and you should get a list of "dangling commits". Examine each commit usinggit show <hash>
andgit log <hash>
until you find the correct one.Update the branch references:
echo aaaaaaaaaaaaaaa.... > refs/heads/master echo bbbbbbbbbbbbbbb.... > refs/heads/foo
Use
git log master
andgit log foo
to ensure that you restored the correct branches.