2011-08-16 1 views
3

Steve Losh: A Guide to Branching in Mercurial -

Mercurial va pousser/tirer toutes les branches par défaut, alors que git va pousser/tirer seulement la branche courante.

Je me demande si je comprends bien:

Il me semble que quand je fais un git pull fait, je fairefetch de toutes les branches, mais l'merge ne se produisait qu'avec la branche actuelle que je suis assis sur. C'est très près de mercurial où un pull obtient moi tout de la télécommande; mais ne pasmerge quoi que ce soit encore.

En mercurial un push envoie tout, mais un update explicite est nécessaire pour fusionner les choses. Je ne suis pas tout à fait sûr sur git' le comportement de l'opération push.

Répondre

4

Dans Git, vous devez tirer/pousser toutes les branches une par une. Ainsi, vous pouvez travailler sur des branches locales sans déranger le serveur.

Vous pouvez spécifier à chaque fois quelle branche vous voulez tirer/pousser: git push origin master signifie que vous voulez pousser votre master de branche sur celui d'origine, qui est souvent le serveur "par défaut".

+1

Dans pousser 'hg mercurial -r .' pousse juste la branche courante. Il y a un alias 'hg nudge' pour ça. –

+0

** hg nudge ** est une extension ou un alias dans votre ** ~/.hgrc ** ... – gavenkoa

0

Qu'est-ce qui se passe quand git pull se fait sans refspec est basée sur la configuration (de la section de comportement par défaut de l'homme-git pull):

Afin de déterminer quelles branches à distance pour aller chercher (et éventuellement stocker dans la branches de suivi à distance) lorsque la commande est exécutée sans aucun paramètre refspec sur la ligne de commande, les valeurs de la variable de configuration remote..fetch sont consultées, et s'il n'y en a pas, $ GIT_DIR/distant/fichier est consulté et Pull: les lignes sont utilisées. En plus des formats refspec décrits dans la section OPTIONS, vous pouvez avoir un englobement refspec qui ressemble à ceci:

refs/heads/: refs/remotes/origine/

http://www.kernel.org/pub/software/scm/git/docs/git-pull.html

Encore une fois ce qui est poussé par git push dépend de la configuration (et des paramètres)

Sans configuration supplémentaire, fonctionne comme git push origin :.

Le comportement par défaut de cette commande en cas de non peut être configuré en définissant l'option push de la télécommande. Par exemple, pour ne pousser que la branche actuelle vers l'origine, utilisez par défaut git config remote.origin.push HEAD. Tout valide peut être configuré par défaut pour l'origine git push.

http://kernel.org/pub/software/scm/git/docs/git-push.html