web-dev-qa-db-fra.com

Pourquoi dois-je "git Push --set-upstream Origin <branche>"?

J'ai créé une branche locale pour tester Solaris et Sun Studio. J'ai ensuite poussé la branche en amont. Après avoir validé une modification et tenté d’appliquer les modifications:

$ git commit blake2.cpp -m "Add workaround for missing _mm_set_epi64x"
[solaris 7ad22ff] Add workaround for missing _mm_set_epi64x
 1 file changed, 5 insertions(+)
$ git Push
fatal: The current branch solaris has no upstream branch.
To Push the current branch and set the remote as upstream, use

    git Push --set-upstream Origin solaris

Pourquoi dois-je faire quelque chose de spécial pour cela?

Existe-t-il un cas d'utilisation raisonnable dans lequel quelqu'un créerait <branch>, transmettrait le <branch> à distance, puis demanderait une validation sur <branch> n'est pas censé être pour <branch>?


J'ai suivi cette question et répondu à Stack Overflow: Poussez une nouvelle branche locale dans un référentiel Git distant et suivez-la aussi . Je suppose que c'est un autre exemple de réponse acceptée incomplète ou erronée. Ou, c’est un autre exemple de Git prenant une tâche simple et la rendant difficile.


Voici la vue sur une autre machine. La branche existe clairement, elle a donc été créée et poussée:

$ git branch -a
  alignas
* master
  remotes/Origin/HEAD -> Origin/master
  remotes/Origin/alignas
  remotes/Origin/arm-neon
  remotes/Origin/det-sig
  remotes/Origin/master
  remotes/Origin/solaris
75
jww

Une commande fondamentalement complète ressemble à git Push <remote> <local_ref>:<remote_ref>. Si vous utilisez uniquement git Push, git ne sait pas quoi faire exactement à moins que vous n'ayez effectué une configuration qui l'aide à prendre une décision. Dans un dépôt Git, nous pouvons configurer plusieurs télécommandes. Nous pouvons également envoyer une référence locale à une référence distante. La commande complète est le moyen le plus simple de faire un Push. Si vous voulez taper moins de mots, vous devez d'abord configurer, comme --set-upstream.

11
ElpieKay

La différence entre
git Push Origin <branch>
et
git Push --set-upstream Origin <branch>
est qu’ils poussent tous les deux très bien dans le référentiel distant, mais c’est quand vous tirez que vous remarquez la différence.

Si tu fais:
git Push Origin <branch>
en tirant, vous devez faire:
git pull Origin <branch>

Mais si vous le faites:
git Push --set-upstream Origin <branch>
alors, en tirant, il suffit de faire:
git pull

Ainsi, ajouter dans --set-upstream vous évite de spécifier quelle branche vous souhaitez extraire à chaque fois que vous faites git pull.

0
Adam