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?
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?
Réponses:
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 exemple git init
).
Vous pouvez supprimer la master
branche (par exemple git branch -D master
). Vous ne pouvez pas supprimer le HEAD
pointeur.
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
git push origin
et cela poussera votre branche B
«à changer origin/B
».
Si vous êtes sur votre master
branche, 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 HEAD
désignera la branche par défaut pour cette télécommande.
Voir la git remote set-head
page 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 deorigin
est définie surmaster
, alorsorigin
peut être spécifiée là où vous le spécifiez normalementorigin/master
.