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
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.
La différence entregit Push Origin <branch>
etgit 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
.