Quelle est la différence entre le HEAD
et master
dans Git?
J'ai fait un clone d'un projet sur GitHub et je souhaite transférer mes modifications vers la télécommande. Mais vers lequel dois-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 spécial de référence qui pointe vers une autre référence. Il peut pointer vers master
ou non (il pointera vers la branche actuellement extraite). Si vous savez que vous voulez vous engager dans la master
branche, poussez-le.
Voici un exemple visuel:
Sur votre propre référentiel, vous pouvez vérifier où HEAD
pointe le en exécutant ceci:
$ git symbolic-ref HEAD
refs/heads/master
Cependant, trouver où remotes/origin/HEAD
pointe le est plus délicat car il se trouve sur la machine distante.
Il y a un excellent 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 qu'il
HEAD
s'agit d'un pointeur / étiquette vers le commit le plus récent de la branche sur laquelle vous vous trouvez actuellement.master
est la branche par défaut créée lorsque vous avez initialisé un référentiel git (par exemplegit init
).Vous pouvez supprimer la
master
branche (par exemplegit branch -D master
). Vous ne pouvez pas supprimer leHEAD
pointeur.la source
HEAD
est un pointeur / étiquette vers le commit le plus récent de la branche sur laquelle vous vous trouvez actuellement." Je pense que c'est au mieux trompeur. Si vous extrayez un commit plus ancien, alors HEAD est maintenant un pointeur vers ce commit plus ancien, pas vers le commit le plus récent. Droite?checkout
commande équivaut à changer de branche dans d'autres systèmes SCM courants.HEAD
vraiment le pointeur Git . J'apprécie votre commentaire et je pense que les autres aussi. Le contenu de mon article original ainsi que votre commentaire de suivi se complètent. Merci.Poussez simplement les changements de votre succursale actuelle
et cela poussera votre branche
B
«à changerorigin/B
».Si vous êtes sur votre
master
branche, git poussera versorigin/master
.En fait, il poussera tous les changements sur les branches locales qui ont des branches distantes correspondantes à
origin
. Il est contrôlé par le paramètre de configuration push.default .Voir également pousser RefSpecs dans le livre Pro Git .
Ce que vous voyez est la barre latérale représentant toutes les références de votre référentiel distant dans le fork expérimental GitX du projet GitX .
Le
HEAD
désignera la branche par défaut pour cette télécommande.Voir la
git remote set-head
page de manuel :la source