¿Github mantiene eliminadas las sucursales remotas en la historia? Si es así, ¿pueden restaurarse?

Me preguntaba si hay una manera de restaurar una twig eliminada remotamente en github. El historial mantiene claramente el logging de la sucursal y se fusiona con otras sucursales, pero no estoy seguro de si es posible restaurar una sucursal eliminada.

Gracias.

Sí, es posible restaurar una twig eliminada de git.

Encuentre su ID de compromiso: busque una sucursal usando git reflog

Si tuvo la sucursal en su repo de git local en los últimos 30 días, puede encontrarla en el reflog usando lo siguiente:

git reflog 

Busque el nombre de la sucursal en el reflog y tenga en count el punto HEAD{x} o el ID de confirmación.

Vuelva a crear la bifurcación desde el punto de cabecera Reflog:

 git checkout -b branch_name HEAD@{27} 

Vuelva a crear la twig desde la ID de confirmación:

Puede verificar el ID de confirmación y crear una bifurcación fuera de ese punto de confirmación:

 git checkout -b branch_name <commit id> 

Es posible solicitar el soporte de GitHub y hacer que examinen el reflog de su repository remoto ( como en este hilo, por ejemplo ).
Si esto es lo suficientemente cerca (less de 30 días por defecto) de la eliminación, el reflog todavía contiene los commits a los que ya no hace reference ninguna twig.
Crear una twig en una de esas confirmaciones les permite volver a ser accesibles.

Para get más información sobre el reajuste, consulte " ¿qué diablos es un reflog y por qué es tan importante? "


Actualización: el propietario del repository también puede consultar la API de GentHub EVents :
Consulte " ¿GitHub restring las ID de confirmación? "

git reflog le mostrará la historia de HEAD . Si la twig que eliminó se llamó foo , entonces en esa salida, debería ver líneas como 48534f5 HEAD@{0}: checkout: moving from master to foo o 48534f5 HEAD@{1}: merge foo: Fast-forward . Puede search el resultado de git reflog para descubrir qué compromiso debe ser el más reciente al que foo señaló.

Tenga en count que el file de reflog "foo" se elimina cuando se borró foo, pero dado que el reflog de HEAD es diferente, aún existe.

Eche un vistazo a este script python para events github. https://github.com/jimzucker/githubutils/blob/master/githubreflog.py

Lo creé para tirar events y hacerlos legibles, puedes meterlos en grep y search la twig que te interese. Si hay suficiente historial verás el evento de eliminación para la twig en cuestión, la siguiente línea será el último evento push y ese es el sha en el que estás interesado

Cuando la twig ha sido eliminada por un time muy largo (en mi caso, 1 año), pero usted había abierto una request de extracción para esa twig, puede resucitarla buscando en el historial de requestes de extracción.

Una vez que encontré la request de extracción para esa twig, pude restaurar la twig. La información de compromiso relevante, etc. también está disponible en la request de extracción.