Qu'est-ce que Head in Git?

Parfois, vous voyez la documentation Git se référant à quelque chose appelé HEAD. Par exemple, la branche doit être complètement intégrée dans HEAD. Mais qu'est-ce que Git HEAD exactement?

Dans cet article, nous en apprendrons plus sur Git HEAD, mais avant cela, résumons simplement ce qu'est Git et son utilisation. Git est un outil de contrôle distribué utilisé non seulement par les chefs de produit et les développeurs, mais aussi par les scientifiques des données pour gérer le développement du code source du programme et son histoire.

HEAD Pointer in Git

Git gère une variable de référence, appelée HEAD pour la dernière validation dans la branche de paiement récente. Vous pouvez imaginer HEAD comme la «branche engagée actuelle». Et nous pouvons considérer comme un pointeur, car le but de cette variable est de pointer ou d'agir comme une référence à un commit particulier dans le référentiel. Disons, nous faisons un nouveau commit dans le repo puis le pointeur ou HEAD va se déplacer ou changer sa position pour pointer vers un nouveau commit.

HEAD pointe à tout moment sur le point de départ de la branche actuelle dans le référentiel. Il peut être considéré comme le dernier état ou le dernier point extrait dans un référentiel. En d'autres termes, le HEAD est un pointeur vers le parent des commits suivants ou où le prochain commit va se produire car c'est là que le dépôt s'est arrêté.

Une bonne analogie serait un tourne-disque et les touches de lecture et d'enregistrement dessus comme la tête. Lorsque l'audio commence à enregistrer, la bande avance en passant devant la tête en enregistrant dessus. Le bouton Stop arrête l'enregistrement tout en pointant vers le dernier point enregistré et le point où la tête d'enregistrement s'est arrêtée est l'endroit où il continuera d'enregistrer à nouveau lorsque vous appuyez à nouveau sur Record. Si nous nous déplaçons, le pointeur de la tête se déplace à différents endroits, cependant, lorsque vous appuyez à nouveau sur Record, l'enregistrement commence à partir du point sur lequel la tête pointait lorsque vous avez appuyé sur Record.

Dans Git, vous pouvez utiliser la commande ci-dessous pour voir ce que pointe le pointeur HEAD.

cat .git / HEAD:

  • Il montre le contenu de .git / HEAD comme indiqué ci-dessous
  • réf: refs / têtes / master
  • Il s'agit essentiellement d'une référence symbolique à la dernière branche validée que vous avez extraite et pointe effectivement vers la validation au début de la branche actuelle.

Chaque fois que nous faisons un nouveau commit comme indiqué ci-dessous, il est ajouté avant le HEAD actuel, ce qui fait que Git pointe automatiquement le HEAD vers le nouveau commit.

git diff HEAD..HEAD ~ 3: Plus précisément, HEAD est un pointeur mobile qui pourrait faire référence à la branche courante, ou il ne le pourrait pas mais il se réfère toujours au «commit actuel». Il s'agit (du commit actuel) du commit "git commit" est construit sur, et est souvent comparé à "git diff –cached" et "git status".

git log @: Taper 'HEAD' prend du temps, surtout quand il y a un raccourci, '@' à la place. Le symbole '@' est choisi car il suit naturellement la syntaxe (par exemple par (u)), mais à part cela, il n'y a pas de référence ou d'opération, et quand il n'y en a pas, 'HEAD 'peut être supposé à la place de @.

1. TÊTE détachée

Il est plausible pour HEAD de pointer vers un changement spécifique qui n'a pas encore été lié à un nom de branche. C'est la situation qui est appelée HEAD détachée et cela se produit lorsque quelqu'un extrait autre chose qu'une branche (locale), par exemple un commit spécifique, une branche distante ou une balise. Par conséquent, HEAD détaché peut être utilisé pour extraire une validation qui ne pointe pas vers le point de départ d'une branche existante, ou pour créer une nouvelle validation qui n'est pas nécessairement référencée par une branche connue.

Prenons un exemple où nous vérifions la validation de b d'une manière ou d'une autre

  • git checkout master ^#or
  • git checkout v3.1

Notez que quelle que soit la commande d'extraction utilisée, HEAD se réfère maintenant à la validation b. Cet état de b est appelé état HEAD détaché.

Regardons les exemples ci-dessous pour voir ce qui se passe quand un commit est créé:

git checkout -b foo: d' abord une nouvelle branche nommée foo est créée, qui est appelée commit f qui met à jour à son tour le HEAD pour pointer vers la branche foo. Cela signifie qu'il ne sera plus dans un état HEAD détaché.

git branch foo: Cela crée une nouvelle branche nommée foo, qui est appelée commit f, mais le HEAD est laissé détaché.

git tag foo: Cela crée également une nouvelle balise nommée foo, qui est appelée commit f, mais le HEAD est laissé détaché.

Supposons que vous ayez changé de position autre que commit f, le nom de l'objet doit d'abord être récupéré (généralement en utilisant la commande git reflog), puis une référence lui est créée.

Pour connaître les deux derniers commits auxquels HEAD fait référence, utilisez l'une des commandes ci-dessous:

  • git log -g -2 HEAD #or
  • git reflog -2 HEAD

2. ORIG_HEAD

Il existe un autre type de TÊTE que vous devez connaître. Les commandes «fusionner» ou «tirer» laissaient toujours la pointe d'origine de la branche courante dans quelque chose appelé ORIG_HEAD. Il peut être utilisé à l'aide des commandes suivantes.

git reset –hard ORIG_HEAD: En utilisant ceci, reset hard ramène le fichier d'index ainsi que l'arborescence de travail à son état d'origine, tout en réinitialisant la pointe de la branche à ce commit, mais il annule les modifications locales.

git reset –merge ORIG_HEAD: Mais que se passe-t-il si vous souhaitez conserver les modifications locales, dans la mesure où vous pouvez utiliser la commande ci-dessus pour conserver les modifications locales. une fusion problématique peut être supprimée en utilisant 'git reset ORIG_HEAD'. De plus, la fusion définit à tout moment '.git / ORIG_HEAD' à l'état d'origine de HEAD afin de supprimer une fusion problématique en utilisant 'git reset ORIG_HEAD'.

Si vous rencontrez un problème avec plusieurs validations, ORIG_HEAD est défini sur le point de départ de la branche actuelle avant d'appliquer des correctifs car une erreur dans les validations peut être plus facilement corrigée de cette façon.

Avantages de Git HEAD

  • Il est utilisé pour pointer vers la branche récemment validée.
  • Il peut être utilisé pour effectuer des modifications depuis le dernier point visité.
  • Il peut également être utilisé pour se déplacer vers différents points de l'histoire et travailler à partir de là.
  • Maintient le référentiel et le processus propres et lisibles.

Conclusion

Git a de nombreuses utilisations et est largement utilisé par les développeurs, les chefs de produit et les scientifiques des données. Ses commandes sont très efficaces et peuvent être très utiles. HEAD est une référence au dernier commit de la branche actuellement extraite.

Articles recommandés

Ceci est un guide de Qu'est-ce que Head in Git?. Ici, nous discutons du pointeur HEAD dans Git qui comprend HEAD détaché et ORIG_HEAD ainsi que les avantages de Git HEAD. Vous pouvez également consulter les articles suivants pour en savoir plus -

  1. Qu'est-ce que Git Fetch?
  2. Git Fetch vs Git Pull
  3. Qu'est-ce que Git Branch?
  4. Terminologie Git
  5. Système de contrôle de version GIT
  6. Git Push
  7. Trois étapes du cycle de vie de Git avec le workflow
  8. Comment utiliser GIT Cherry-pick avec l'exemple?

Catégorie: