Mieux vaut être expliqué par un exemple: je suis sur la branche 0.58 du référentiel et voici comment je tire:
git pull origin 0.58
Quand j'appelle simplement "git pull", j'obtiens:
ip238:openlierox az$ git pull
You asked me to pull without telling me which branch you
want to merge with, and 'branch.0.58.merge' in
your configuration file does not tell me either. Please
name which branch you want to merge on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details on the refspec.
If you often merge with the same branch, you may want to
configure the following variables in your configuration
file:
branch.0.58.remote = <nickname>
branch.0.58.merge = <remote-ref>
remote.<nickname>.url = <url>
remote.<nickname>.fetch = <refspec>
See git-config(1) for details.
Il semble que j'ai probablement oublié une option (--track?) Quand j'ai vérifié cette branche. Quoi qu'il en soit, j'ai défini ceci maintenant:
git config branch.0.58.merge 0.58
git config branch.0.58.remote origin
Et cela semble fonctionner. Ensuite, juste à cause de mon intérêt, j'ai jeté un coup d'œil à une autre branche à propos de ces paramètres:
ip238:openlierox az$ git config branch.0.57.merge
refs/heads/0.57
ip238:openlierox az$ git config branch.0.57.remote
origin
Je me demandais maintenant, y a-t-il une différence entre "0.58" ou devrais-je spécifier "refs / heads / 0.58"?
Quelle est la différence exactement?
heads
avec un "s".Réponses:
A
ref
est tout ce qui pointe vers un commit, par exemple, des branches (têtes), des balises et des branches distantes. Vous devriez voir des têtes, des télécommandes et des balises dans votre.git/refs
répertoire, en supposant que vous avez les trois types de références dans votre référentiel.refs/heads/0.58
spécifie une branche nommée 0.58. Si vous ne spécifiez pas l'espace de noms dans lequel se trouve la référence, git recherchera les espaces par défaut. Cela rend l'utilisation de seulement 0.58 peut être ambiguë - vous pourriez avoir à la fois une branche et une balise nommées 0.58.la source
refs/heads/
etrefs/remotes/
etrefs/tags/
Juste pour quelqu'un qui est curieux -
git show-ref
, qui est disponible depuis Git v1.8.2.2, vous montrera toutes les références que vous avez dans votre référentiel local.la source
git log --decorate=full
Voir,
branchName
doit être entièrement résolu avant que GIT puisse l'identifier. Le nom entièrement résolu serarefs/heads/branchName
.L'une des commandes les plus connues
git checkout branchName
le résout automatiquement pour identifier où vous souhaitez effectuer le paiement. Notez qu'il le fait automatiquement, donc nous ne l'écrivons jamais entièrement par nous-mêmes.Comment fait-il cela? Regardons ici
Donc, en plus de 6 étapes, il essaie de résoudre ce que c'est
branchName
. Par conséquent, nous n'avons jamais besoin de lui donner un nom de branche entièrement résolu.Regardez ici et ici aussi.
Aussi, allez dans votre
.git
répertoire et voyez à l'intérieur duref
dossier.la source