Depuis Contrôle de version avec Git
Git ne conserve aucune forme d'enregistrement historique des noms de branche en cours de création, déplacé, manipulé, fusionné ou supprimé. Une fois qu'un nom de branche a été supprimé, il est parti.
Un nom de branche est une référence, donc reflog ne conserve pas l'historique des noms de branche en cours de création,
déplacé, manipulé, fusionné ou supprimé?
3 Réponses :
Git conserve les entrées dans le reflog de la branche si une branche est créée, déplacée ou modifiée, et dans le reflog HEAD si elle est extraite. Cependant, Git ne conserve pas les entrées de reflog pour les branches supprimées et ne met pas à jour le reflog d'une branche qui est fusionnée dans une autre, bien qu'il mette à jour le reflog de la branche dans laquelle la fusion a eu lieu.
Les entrées Reflog sont régulièrement élaguées, donc l'enregistrement n'est pas permanent.
Essentiellement, si une référence est créée localement, déplacée ou modifiée d'une manière ou d'une autre, le reflog de cette référence en contiendra un enregistrement jusqu'à ce que la référence soit supprimée ou que l'entrée soit élaguée.
Le reflog HEAD peut contenir des entrées pour des noms de branche qui n'existent plus (bien que simplement sous forme de texte, par exemple, passer de asdf à master ).
Comme Git est construit aujourd'hui, le reflog pour une référence X est supprimé lorsque X lui-même est supprimé. Lorsque X est renommé, le reflog est renommé de la même manière, sans ajouter de nouvelle entrée. En effet, le nom du reflog est le nom de la branche, avec logs / inséré à l'avant: le reflog pour master (< code> refs / heads / master ) est nommé logs / refs / heads / master , tandis que le reflog pour HEAD est nommé logs / HEAD < / code>.
Il existe, dans les mises à jour proposées pour certains futurs Git, du code pas tout à fait entièrement réalisé qui conserve le reflog après la suppression de la référence elle-même. Donc un jour, cela pourrait changer.
En plus des limitations mentionnées par torek, le reflog est une structure de données locale. Cela signifie que même si les reflogs pour les branches supprimées étaient conservés, vous n’auriez toujours pas un journal complet des créations de branches, des suppressions, etc. Les reflogs ne connaîtront que les branches qui avaient un historique sur votre site local clone, et ne connaîtrait que l’histoire locale de ces branches.
Le reflog peut conserver une référence aux commits dans une branche maintenant supprimée, mais cela ne signifie pas qu'il stocke l'heure à laquelle une telle branche a été créée, déplacée, supprimée, etc.