1768 votes

Pourquoi est-ce que je dois faire '--set-amont ' tout le temps ?

J'ai créer une nouvelle branche dans Git:

git branch my_branch

Pousser:

git push origin my_branch

Maintenant, dire que quelqu'un a fait des modifications sur le serveur et je veux tirer à partir d' origin/my_branch. Je fais:

git pull

Mais j'obtiens:

You asked me to pull without telling me which branch you
want to merge with, and 'branch.my_branch.merge' in
your configuration file does not tell me, either. Please
specify which branch you want to use on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details.

If you often merge with the same branch, you may want to
use something like the following in your configuration file:

    [branch "my_branch"]
    remote = <nickname>
    merge = <remote-ref>

    [remote "<nickname>"]
    url = <url>
    fetch = <refspec>

See git-config(1) for details.

J'ai appris que je peux le faire fonctionner avec:

git branch --set-upstream my_branch origin/my_branch

Mais pourquoi ai-je besoin de faire cela pour chaque branche-je créer? N'est-il pas évident que si je pousse my_branch en origin/my_branch, alors que je ne veux tirez origin/my_branch en my_branch? Comment puis-je faire de ce comportement par défaut?

1741voto

Mark Longair Points 93104

Un raccourci, qui ne dépend pas de se souvenir de la syntaxe pour l' git branch --set-upstream 1 est à faire:

git push -u origin my_branch

... la première fois que vous appuyez sur cette branche. Vous ne devez le faire qu'une fois, et qui met en place l'association entre votre direction et de l'un à l' origin de la même manière qu' git branch --set-upstream .

Personnellement, je pense que c'est une bonne chose d'avoir à configurer l'association entre votre direction et un sur la télécommande de façon explicite. C'est juste une honte que les règles sont différentes pour git push et git pull.


1 Il peut sembler idiot, mais j'ai très souvent oublier de préciser la branche courante, en supposant que c'est la valeur par défaut - il ne l'est pas, et les résultats sont plus à confusion :)

Mise à jour 2012-10-11: Apparemment, je ne suis pas la seule personne qui l'a trouvé, il est facile de se tromper! Grâce à VonC pour préciser que git 1.8.0 introduit le plus évident git branch --set-upstream-to, qui peut être utilisé comme suit, si vous êtes sur la branche my_branch:

git branch --set-upstream-to origin/my_branch

... ou avec l'option courte:

git branch -u origin/my_branch

Ce changement, et son raisonnement, est décrite dans les notes de version de git version 1.8.0, la version release candidate 1:

Il était tentant de dire git branch --set-upstream origin/master, mais qui indique à Git pour organiser la branche locale origin/master d'intégration avec l'extrait de la branche, ce qui est hautement improbable que l'utilisateur voulait dire. L'option est obsolète; utiliser le nouveau --set-upstream-to (avec un court et doux- -u) option à la place.

1704voto

Zamith Points 1637

Vous pouvez y arriver avec moins de typage. Tout d’abord, changer la façon dont fonctionne votre bouton poussoir :

Il déduira la `` partie, donc vous pouvez faire :

Qui seront les deux créer les sites distants avec le même nom et le suivre.

104voto

cdunn2001 Points 3597

Vous pouvez simplement

en premier lieu. Si vous définissez ou (mon préféré) à (valeur par défaut est ), suivra automatiquement .

Voir `` .

12voto

mattacular Points 1446

Pour ce qu’elle vaut, si vous essayez de suivre une direction qui ont déjà existe sur la télécommande (eg. origine/somebranch) mais n’avez pas vérifié sur place encore, vous pouvez faire :

Remarque : "-t" est la version raccourcie de '--trace ' option.

Cela met en place la même association tout de suite la chauve-souris.

10voto

medicdave Points 634

Vous pouvez également explicitement dire git pull quels sites distants pour tirer (comme il le mentionne dans le message d’erreur) :

``

Être prudent avec cela, cependant : si vous êtes sur une autre branche et faire une traction explicite, la spécification vous tirez est fusionnée dans la branche que vous êtes sur !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X