Cómo get el historial de Git Después de la actualización forzada en el maestro y la twig

Estaba trabajando en una twig principal y usé git add -u porque había files eliminados en la twig que no quería.

Después de que me comprometí y empujé usando -f a control remoto. Ahora mis cambios locales han anulado la twig principal desde la última comprobación de maestro.

Por favor necesito ayuda.

Si tiene acceso de shell al server que aloja su repository de git, puede usar git reflog para search commits perdidos. Tendrás que inspeccionar los hash que produce el git reflog para saber cuáles estaban en la twig principal antes de tu inserción forzada. Una vez que encuentres los commits perdidos, te recomendaría usar git checkout <hash> -b lostbranch en el último commit para poner los commits perdidos todos en una twig, luego fusionar esa twig en master.

Esto es exactamente lo que hace el -f .

Está forzando el empuje que sobrescribirá cualquier dato en el server.

Cómo restaurar compromisos previos

  • Si está usando github lea aquí cómo recuperarlo

  • Verifique si tiene los datos en su máquina

    Si tiene los datos y sabe cuál fue el último compromiso, puede salir y volver a presionar en este punto.

  • Aviso importante: nunca arroje datos a less que se haya ejecutado gc . por lo tanto, incluso si no ve que este commit está todavía en su repository local, solo tiene que encontrarlo.
    Puedes encontrarlo ejecutando git fsck que "encontrará" todas las confirmaciones que no son alcanzables en este momento. Ahora simplemente tiene que encontrar el correcto y verificarlo

  • Escriba un script que ejecute git cat-file -t en su carpeta de objects y descubra todos los objects de tree que representan commit.
    Una vez que los encuentre, imprima el contenido con git cat-file -p <commitid> y encuentre el que está buscando.

  • use git reflog en el server si tiene acceso a él.
    git reflog es solo historial local, por lo que ejecutarlo en cualquier otra máquina no funcionará.

  • En tu máquina local

     # work on local master git checkout <branch name> # reset to the previous state of origin/master, as recorded by reflog git reset --hard origin/<branch name>@{1} # If this is the commit that yo need rest hard to this commit # git reset --hard <commit id> # if not try to loop over the reflog until you will find the commit you need # finally, push the branch back as you did before git push -f origin <branch name> 
  • Verifique si algún otro miembro del equipo todavía tiene el "contenido antiguo" de su twig