2010-12-12 4 views
2

Je n'arrive pas à comprendre les différences entre 'master' 'master' 'origin/master', 'télécommandes/origine/master' !! Y at-il une règle pour nommer les branches GIT? Je suppose que 'origin master' est la branche master dans le référentiel alors que origin/master est mon reflet local de la branche master du repository, alors qu'est-ce que remotes/origin/master ?! Aussi, parfois je dois utiliser origin/master pour faire référence à la branche maître du dépôt (j'ai oublié le cas cependant, mais je sens que j'ai été dans une telle chose avant), pourquoi est-ce?GIT: Problèmes de compréhension de la convention de dénomination de branche

Répondre

4

Vous devriez lire sur le git branching model pour le comprendre correctement. Cependant, suivre est une explication rapide et sale.

Les branches de git sont des pointeurs vers certains nœuds de l'arbre de validation DAG. Ils se déplacent lorsque vous effectuez certaines opérations (par exemple une validation). master est un tel pointeur qui est par défaut celui créé lors de l'initialisation d'un nouveau référentiel. C'est votre "branche principale" (pour ainsi dire).

Étant donné que git est un système de contrôle de version distribuée, il existe une différence entre votre référentiel local et un référentiel distant (comme un sur github). Elles sont appelées remote s et lorsque vous clonez pour la première fois, la télécommande à partir de laquelle vous avez cloné est automatiquement créée et nommée origin (c'est-à-dire d'où provient votre code).

Lorsque vous dites <remote>/<branch>, il s'agit de l'emplacement du pointeur <branch> non sur votre clone local mais sur le <remote>. Donc, si, après le clonage, vous faites 10 validations à votre branche locale, master (votre branche locale) sera 10 commits en avance de origin/master. Pour préciser que nous parlons d'une télécommande, la convention remotes/<remote_name>/<branch_name> est utilisée.

Je pense que vous devez lire le livre auquel j'ai lié avant d'utiliser git. C'est un peu non intuitif pour les personnes venant d'un système de contrôle de version comme svn ou autres. Le modèle de branchement pour git est beaucoup plus simple que celui des systèmes centralisés.

+3

"Lorsque vous dites /, il fait référence à l'emplacement du pointeur pas sur votre clone local mais sur le ." <- Je sais ce que vous voulez dire, mais je pense que c'est formulé de façon trompeuse - / est vraiment une ref dans votre clone local, et il ne correspond pas nécessairement dans le dépôt . Je pense qu'il est plus utile de penser à / comme une référence qui met en cache l'état de sur depuis la dernière fois que vous avez fait un "git fetch", "git pull" ou "git push" (si le push a été mis à jour sur ) ... –

+0

Très bon point! –

Questions connexes