Quelle est la différence entre le HEAD
et master
dans Git?Différence entre HEAD et maître
J'ai fait un clone d'un projet sur GitHub et je veux pousser mes changements sur la télécommande. Mais à qui devrais-je pousser?
Quelle est la différence entre le HEAD
et master
dans Git?Différence entre HEAD et maître
J'ai fait un clone d'un projet sur GitHub et je veux pousser mes changements sur la télécommande. Mais à qui devrais-je pousser?
il suffit de pousser les changements de votre branche actuelle
git push origin
et il poussera votre branche 'B
' modifications 'origin/B
'.
Si vous êtes sur votre branche master
, git va pousser à origin/master
.
En fait, il va pousser tous les changements sur les branches locales qui ont des branches distantes correspondant à origin
. Il est contrôlé par le paramètre de configuration push.default. Voir aussi pushing RefSpecs in the Pro Git book.
Ce que vous voyez est la barre latérale représentant tous les refspecs de votre repo à distance dans le Experimental GitX fork du GitX project.
Le HEAD
désignera la branche par défaut pour cette distance.
Voir git remote set-head
man page:
Avoir une branche par défaut pour une distance n'est pas nécessaire, mais permet au nom de la télécommande à préciser 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'endroit où vous spécifiez normalementorigin/master
.
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 particulier de référence qui pointe vers une autre référence. Il peut pointer vers master
ou il ne peut pas (il indiquera quelle branche est actuellement extraite). Si vous savez que vous souhaitez vous engager dans la branche master
, appuyez sur pour cela.
Voici un exemple visuel:
Sur votre dépôt, vous pouvez vérifier où le HEAD
pointe vers en exécutant ceci:
$ git symbolic-ref HEAD
refs/heads/master
Cependant, savoir où l'remotes/origin/HEAD
pointe vers est plus difficile parce que c'est sur la machine distante.
Il y a un grand 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/étiquette la plus récente validation de la branche sur laquelle vous êtes 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 branche master
(par exemple git branch -D master
). Vous ne pouvez pas supprimer le pointeur HEAD
.
"' HEAD' est un pointeur/label pour la validation la plus récente de la branche sur laquelle vous êtes actuellement. " Je pense que c'est trompeur au mieux. Si vous enregistrez un commit plus ancien, alors HEAD est maintenant un pointeur vers ce commit plus ancien, pas vers le commit le plus récent. Droite? – LarsH
Vous avez raison. HEAD est votre dernière commande. Mais pour ma défense, pour Git, la commande 'checkout' équivaut à changer de branche dans d'autres systèmes SCM courants. – benhorgen
Je sympathise ... Je pourrais facilement avoir fait la même erreur. La seule raison que j'ai remarquée était parce que je suis à l'étape d'essayer de rechercher ce que signifie réellement HEAD. Y a-t-il une chance que vous puissiez éditer votre réponse pour être correcte? Je trouve HEAD être un concept difficile à trouver des descriptions précises de, pour les non-experts git comme moi. Et le fait d'avoir des conseils sur Internet qui donnent des informations * incorrectes sur HEAD le rend un peu plus difficile. – LarsH
+1 Une réponse plus précise que la mienne. Voir aussi http://stackoverflow.com/questions/3301956/git-correct-way-to-change-active-branch-in-a-bare-repository/3302018#3302018 et http://stackoverflow.com/questions/ 3301956/git-correct-way-to-change-active-branch-in-a-bare-repository pour des illustrations autour de ces concepts. – VonC