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?
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:
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
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
.
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 .
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 pourOrigin
est définie surmaster
, alorsOrigin
peut être spécifié là où vous spécifieriez normalementOrigin/master
.