Simplemente corrí git push -fpor error, sobrescribiendo así una rama remota.
Original:
(remote origin:)
branch master -> commit aaaaaaa
branch foo -> commit bbbbbbb
(local)
branch master -> commit ccccccc
branch foo -> commit ddddddd
Después git push -f:
(remote origin:)
branch master -> commit ccccccc
branch foo -> commit ddddddd
En mi repositorio local, estoy trabajando en la masterbifurcación, por lo que puedo restaurar la bifurcación masterpara confirmar aaaaaaa, porque puedo obtener la confirmación aaaaaaade git reflog. Sin embargo, no pude comprometerme bbbbbbbporque no tiré antes git push -f.
He intentado git reflogen el repositorio remoto, pero no hay nada útil en reflog en el repositorio simple.
¿Cómo puedo restablecer la rama foopara confirmar bbbbbbben el repositorio remoto?
(PD: no sé el valor real de bbbbbbb).
git
file-recovery
Xiè Jìléi
fuente
fuente

Respuestas:
Prueba esto:
Conéctese al control remoto a través de SSH.
Haga una copia de seguridad de todo el repositorio remoto.
Si conoce al menos los primeros caracteres de
bbbbbbb, usegit show bbbbbby / ogit log bbbbbbpara encontrar el hash de confirmación completo. (Si solo necesita el hash,git rev-parse bbbbbbtambién funcionará, pero siempre es mejor verificarlo).Si usted no sabe el valor en absoluto , ejecutar
git fscky usted debe obtener una lista de "colgando compromete". Examine cada confirmación usandogit show <hash>ygit log <hash>hasta que encuentre la correcta.Actualice las referencias de rama:
Use
git log masterygit log foopara asegurarse de que restauró las ramas correctas.fuente
git fsck.Es probable que otros servicios también brinden tales servicios. Es un ahorro de día.
fuente