Est “refs/heads/master” de même que “refs/remotes/origin/master” dans Git?
La question est simple: est refs/heads/master
la même chose que refs/remotes/origin/master
? Si elle n'est pas, dans certains cas, comment puis-je savoir quand il n'est pas et ce que c'est alors?
- Quelqu'un me corrige si je me trompe, mais vous ne devriez pas avoir un
refs/origin/master
. Il devrait êtrerefs/remotes/origin/master
.
Vous devez vous connecter pour publier un commentaire.
Ils sont deux différents noms symboliques peuvent pointer vers des choses différentes.
refs/heads/master
est une branche dans votre copie de travail nommémaster
. Souvent c'est un suivi de la direction générale derefs/remotes/origin/master
parce queorigin
est le nom par défaut de la télécommande créé pargit clone
et sa branche primaire est généralement aussi nommémaster
.Vous pouvez voir la différence entre eux avec
git rev-list refs/heads/master..refs/remotes/origin/master
qui sera vide si elles sont les mêmes et dans le cas contraire, la liste s'engage entre eux.La différence importante à comprendre est que les branches, en vertu de
refs/heads/
sont les branches qui, lorsque vous avez un extrait, vous pouvez l'avance par la création de nouveaux commits. Ceux de moins derefs/remotes/
, cependant, sont dits "à distance de suivi des branches" - ces refs juste à point pour la validation d'un référentiel distant était à la dernière fois que vous avez fait ungit fetch <name-of-remote>
, ou un succèsgit push
à la correspondante de la branche dans ce référentiel distant. (J'ai écrit un post de blog qui parle de cette différence à une certaine longueur ici.)