Github conserve-t-il les twigs distantes supprimées dans l’historique? Si oui, ceux-ci peuvent-ils être restaurés?

Je me demandais s’il existe un moyen de restaurer une twig supprimée distante dans github. L’historique conserve clairement l’enregistrement de la twig et fusionne avec d’autres twigs, mais je ne suis pas sûr qu’il soit possible de restaurer une twig supprimée.

Merci.

Oui, il est possible de restaurer une twig supprimée à partir de git.

Trouvez votre numéro d’engagement: recherchez une twig à l’aide de git reflog

Si vous aviez la twig dans votre repository git local au cours des 30 derniers jours, vous pourrez peut-être la trouver dans le renvoi à l’aide des éléments suivants:

git reflog 

Recherchez le nom de la twig dans le renvoi et notez le point HEAD{x} ou l’ID de validation.

Recréez la twig depuis le point Reflog HEAD:

 git checkout -b branch_name HEAD@{27} 

Recréez la twig à partir de l’ID de validation:

Vous pouvez extraire l’ID de validation et créer une twig à partir de ce sharepoint validation:

 git checkout -b branch_name  

Il est possible de demander le support de GitHub et de le faire regarder dans le reflog de votre repo distant ( comme dans ce thread par exemple ).
S’il est suffisamment proche (moins de 30 jours par défaut) de la suppression, le renvoi contient toujours les validations qui ne sont plus référencées par aucune twig.
La création d’une twig sur l’un de ces commits leur permet d’être à nouveau accessible.

Pour en savoir plus sur le reflog, voyez ” qu’est-ce que c’est que le refog et pourquoi est-ce si important? ”


Mise à jour: le propriétaire du repository peut également interroger l’API GitHub EVents :
Voir ” Est-ce que GitHub se souvient des identifiants de validation? ”

Lorsque la twig a été supprimée pendant une très longue période (dans mon cas, 1 an), mais que vous avez ouvert une demande d’extraction pour cette twig, vous pourrez peut-être la ressusciter en recherchant dans l’historique des requêtes d’extraction.

Une fois que j’ai trouvé la requête d’extraction pour cette twig, je pouvais restaurer la twig. Les informations de validation pertinentes, etc. sont également disponibles à partir de la demande d’extraction.

git reflog vous montrera l’histoire de HEAD . Si la twig que vous avez supprimée s’appelait foo , alors dans cette sortie, vous devriez voir des lignes comme 48534f5 HEAD@{0}: checkout: moving from master to foo ou 48534f5 HEAD@{1}: merge foo: Fast-forward . Vous pouvez rechercher la sortie de git reflog pour déterminer quel commit doit être le plus récent que foo a désigné.

Ne réalisez pas que le fichier de refog “foo” lui-même est supprimé lorsque foo a été supprimé, mais comme le reflog de HEAD est différent, il existe toujours.

Jetez un coup d’oeil à ce script python pour les événements github. https://github.com/jimzucker/githubutils/blob/master/githubreflog.py

Je l’ai créé pour extraire des événements et les rendre lisibles, vous pouvez le diriger vers grep et rechercher la twig qui vous intéresse. S’il y a suffisamment d’historique, vous verrez l’événement delete pour la twig en question, la prochaine ligne sera le dernier événement push et c’est ce qui vous intéresse.