Git generally doesn't throw anything away, but recovering from this may still be tricky.
If you have the correct source then you could just push it into the remote with the --force
option. Git won't have deleted any branches unless you told it to. If you have actually lost commits then take a look at this useful guide to recovering commits. If you know the SHA-1 of the commits you want then you're probably OK.
Best thing to do: Back everything up and see what is still in your local repository. Do the same on the remote if possible. Use git fsck
to see if you can recover things, and above all DO NOT run git gc
.
Above above all, never use the --force
option unless you really, really mean it.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…