17 votes

que signifie reachable/unreachable dans git ?

Un peu confus

En el Manuel de la communauté git il est dit

La commande git log peut afficher des listes de commits. Seule, elle affiche toutes les commits accessibles depuis le commit parent mais vous pouvez aussi faire des demandes plus spécifiques

$ git log v2.5.. # commits since (not reachable from) v2.5

Je pensais que git log en lui-même ne vous montrait que les commits faits à la branche courante, et que les commits sont séquentiels - donc comment pouvez-vous avoir un commit fait depuis un autre, mais inaccessible depuis celui-ci ?

Je pense que je comprends mal ce que fait git log ou ce que signifie unreachable ou les deux merci pour toute aide !

18voto

Chris Points 3992

Dans Git, chaque commit que vous faites (sauf le tout premier) aura un commit parent. Il s'ensuit que tout commit donné (sauf le premier) est l'enfant d'un (ou éventuellement de plusieurs) autres commit. Vous pouvez également avoir plusieurs branches de développement dans Git, qui commencent ou dévient à un commit ancestral particulier. Rien dans Git ne dicte que les commits doivent se produire dans un ordre chronologique ou linéaire, et donc la fonction git log L'outil doit être capable de gérer plusieurs façons d'interroger l'historique.

Par exemple, supposons que je développe mon application et que je fasse des commits par ordre alphabétique :

---A---B---E---G
    \       \
     C---D   F

Dans cet exemple, je dois avoir fait une nouvelle branche sur les commit A et E.

Si je devais courir git log <D> (où <D> est le SHA du commit), alors l'historique du journal ressemblerait à ceci :

D---C---A---

A partir de ce commit, seuls les parents et leurs ancêtres peuvent être "vus". Les commits B, E, F et G sont techniquement " inaccessibles " depuis le commit D, car ils ne partagent aucun commit parent connecté commun.

6voto

J-16 SDiZ Points 14191

"Y est joignable de X" signifie que l'objet Y est joignable du DAG . En fonction de ce qu'est Y, cela peut signifier :

  • Y est un engagement : Y est un parent/ancêtre de X.
  • Y est un répertoire/dossier/blob : Y est une partie de (pour dire) un commit dans l'arbre parent/ancêtre de X.

Pour certaines docs (par exemple git-fsck), il dit simplement "Y est accessible". Cela signifie que Y est accessible à partir d'une certaine balise/branche (c'est-à-dire que Y ne peut pas faire l'objet d'un garbage collector).

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