3 votes

Que signifie "HEAD -> branch, origin/branch" dans un journal de commit git ?

J'essaie de comprendre la sortie de la commande git log. Typiquement, je vois le HEAD pointer vers une branche spécifique, mais je ne comprends pas ce que signifie le fait que HEAD semble pointer vers la branche locale et la branche distante (HEAD -> branch, origin/branch).

J'ai essayé de chercher la réponse sur le Web, mais je ne savais même pas comment rédiger la question et les résultats qui apparaissaient n'étaient pas pertinents.

git log
commit 3b64cc50d6fe262d007853774689e8ad58e0f2ae (HEAD -> internal-env-board-david-fix, origin/internal-env-board-david-fix)
Author: user <user_email>
Date:   Some_Date

    Added build flag to platform.ini file: -D UAVCAN_CPP_VERSION=UAVCAN_CPP11

Quand je cours git log comme vu ci-dessus, je ne sais pas ce que (HEAD -> internal-env-board-david-fix, origin/internal-env-board-david-fix) signifie. Habituellement, head ne pointe que vers une seule branche, alors qu'ici, il semble pointer vers la branche locale et la branche distante pour une raison quelconque. Une idée de la raison ?

4voto

jcragun Points 751

El Livre Pro Git dit :

Comment Git sait-il sur quelle branche vous vous trouvez ? Il conserve un pointeur spécial appelé HEAD..... Dans Git, c'est un pointeur vers la branche locale sur laquelle vous vous trouvez actuellement. Dans ce cas, vous êtes toujours sur master.

HEAD pointe vers une branche spécifique mais le fichier git log vous montre également où se trouve la branche distante par rapport à votre branche locale. Dans ce cas, les deux branches s'alignent sur le même commit. Ce ne sera pas toujours le cas. Tout ceci est bien décrit avec des diagrammes dans chapitre 3 .

0voto

ElpieKay Points 7502

(HEAD -> internal-env-board-david-fix, origin/internal-env-board-david-fix) est la sortie principalement contrôlée par --decorate[=short|full|auto|no] . La sortie signifie "les noms de référence de tous les commits qui sont montrés". Si aucun n'est donné, --decorate=short est utilisé par défaut. Pour masquer la sortie, utilisez --no-decorate . Pour filtrer la sortie, utilisez --decorate-refs=<pattern> y --decorate-refs-exclude=<pattern> . Pour connaître tous ces refs, on peut utiliser git for-each-ref --points-at=<commit> .

Dans votre cas, origin/internal-env-board-david-fix n'est pas directement liée à HEAD . Les deux sites internal-env-board-david-fix y origin/internal-env-board-david-fix pointent directement vers 3b64cc50d6fe262d007853774689e8ad58e0f2ae y HEAD points à seulement internal-env-board-david-fix . En d'autres termes, HEAD pointe indirectement vers 3b64cc50d6fe262d007853774689e8ad58e0f2ae . Le signe -> indique l'indirection. Avec cat .git/HEAD il imprime ref: refs/heads/internal-env-board-david-fix .

HEAD--->internal-env-board-david-fix--->3b64cc50d6fe262d007853774689e8ad58e0f2ae
origin/internal-env-board-david-fix------^

Si nous courons git checkout 3b64cc50d6fe262d007853774689e8ad58e0f2ae pour passer à l'état détaché HEAD, la décoration serait (HEAD, internal-env-board-david-fix, origin/internal-env-board-david-fix) avec le signe -> disparu. Le contenu de .git/HEAD deviendrait 3b64cc50d6fe262d007853774689e8ad58e0f2ae . Maintenant HEAD et les deux autres branches pointent toutes directement vers 3b64cc50d6fe262d007853774689e8ad58e0f2ae .

                        HEAD--->3b64cc50d6fe262d007853774689e8ad58e0f2ae
internal-env-board-david-fix-----^    ^
origin/internal-env-board-david-fix---|

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