211 votes

Quelle est la différence entre git reflog et log ?

La page de manuel dit que log montre les journaux de commit et reflog gère les informations reflog. Que sont exactement les informations reflog et qu'ont-elles de plus que le journal ? Le journal semble beaucoup plus détaillé.

3voto

Mendi Barel Points 58

git log commencera à partir de l'actuel TETE qui pointe vers une branche (comme maître ) ou directement à l'objet commit (sha code), et va en fait scanner les fichiers objets à l'intérieur de .git/objets du répertoire commit après commit en utilisant le parent qui existent dans chaque objet commit.

Expérimentez : faites pointer le HEAD directement sur un commit : git checkout a721d (créer un nouveau repo et le remplir avec des commits et des branches. remplacer a721d avec une partie de votre code commit) et supprimer les branches rm .git/refs/heads/* Maintenant git log --oneline ne montrera que TETE et ses ancêtres commits.

git reflog d'autre part utilise le journal direct qui est créé à l'intérieur de .git/logs

Expérimentation : rm -rf .git/logs y git reflog est vide.

Quoi qu'il en soit, même si vous perdez tous les tags, toutes les branches et tous les logs dans le dossier logs, les objets commits sont dans le dossier .git/objets afin que vous puissiez reconstruire l'arbre si vous trouvez tous les commits pendants : git fsck

-8voto

user10028634 Points 1

En fait, reflog est un alias pour

 git log -g --abbrev-commit --pretty=oneline

La réponse devrait donc être : c'est un cas spécifique.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X