web-dev-qa-db-fra.com

Différence entre HEAD et master

Quelle est la différence entre HEAD et master dans Git?

J'ai fait un clone d'un projet sur GitHub et je veux appliquer mes modifications à la télécommande. Mais à qui devrais-je pousser?

screenshot

166
Frederik Heyninck

master est une référence à la fin d'une branche. Par convention (et par défaut), il s’agit généralement de la branche d’intégration principale, mais ce n’est pas obligatoire.

HEAD est en fait un type de référence spécial qui pointe vers une autre référence. Il peut pointer sur master ou non (il indiquera la branche actuellement extraite). Si vous savez que vous souhaitez vous engager dans la branche master, cliquez sur Push to this.

Voici un exemple visuel:

alt text

Sur votre propre référentiel, vous pouvez vérifier où pointe HEAD en lançant ceci:

$ git symbolic-ref HEAD
refs/heads/master

Cependant, trouver où le remotes/Origin/HEAD pointe vers est plus délicat car il se trouve sur la machine distante.

Il y a un bon petit tutoriel sur les références git ici:

http://people.gnome.org/~federico/news-2008-11.html#pushing-and-pulling-with-git-1

150
Lee Netherton

La réponse simple est que HEAD est un pointeur/libellé du dernier commit de la branche sur laquelle vous vous trouvez. master est la branche par défaut créée lorsque vous avez initialisé un référentiel git (par exemple, git init).

Vous pouvez supprimer la branche master (par exemple, git branch -D master). Vous ne pouvez pas supprimer le pointeur HEAD.

32
benhorgen

Il suffit de pousser les modifications de votre branche actuelle

git Push Origin

et il poussera votre branche 'B' devient 'Origin/B '.
Si vous êtes sur votre branche master, git va pousser sur Origin/master.
En fait, toutes les modifications seront appliquées aux branches locales ayant des branches distantes correspondantes à Origin. Il est contrôlé par le paramètre de configuration Push.default.
Voir aussi poussant RefSpecs dans le livre de Pro Git .


Ce que vous voyez est la barre latérale représentant toutes les références de votre référent distant dans la fourchette Experimental GitX de la projet GitX .

alt text

Le HEAD désignera la branche par défaut pour cette télécommande.
Voir git remote set-head page de manuel :

Avoir une branche par défaut pour une télécommande n'est pas obligatoire, mais permet de spécifier le nom de la télécommande au lieu d'une branche spécifique.
Par exemple, si la branche par défaut pour Origin est définie sur master, alors Origin peut être spécifié là où vous spécifieriez normalement Origin/master.

8
VonC