Quelle est la différence entre le HEADet masterdans 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?

Quelle est la différence entre le HEADet masterdans 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?

Réponses:
masterest 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.
HEADest 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 masterbranche, poussez-le.
Voici un exemple visuel:

Sur votre propre référentiel, vous pouvez vérifier où HEADpointe le en exécutant ceci:
$ git symbolic-ref HEAD
refs/heads/master
Cependant, trouver où remotes/origin/HEADpointe 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 HEADs'agit d'un pointeur / étiquette vers le commit le plus récent de la branche sur laquelle vous vous trouvez actuellement. masterest la branche par défaut créée lorsque vous avez initialisé un référentiel git (par exemple git init).
Vous pouvez supprimer la masterbranche (par exemple git branch -D master). Vous ne pouvez pas supprimer le HEADpointeur.
HEADest 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?
checkoutcommande équivaut à changer de branche dans d'autres systèmes SCM courants.
HEADvraiment 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
git push origin
et cela poussera votre branche B«à changer origin/B».
Si vous êtes sur votre masterbranche, git poussera vers origin/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 HEADdésignera la branche par défaut pour cette télécommande.
Voir la git remote set-headpage de manuel :
Il n'est pas nécessaire d'avoir une branche par défaut pour une télécommande, mais permet de spécifier le nom de la télécommande à la place d'une branche spécifique.
Par exemple, si la branche par défaut deoriginest définie surmaster, alorsoriginpeut être spécifiée là où vous le spécifiez normalementorigin/master.