La vraie raison est que, dans un nouveau dépôt (git init), il n'y a pas de branche (non master
, pas de branche du tout, zéro branche)
Donc, quand vous poussez pour la première fois vers un dépôt en amont vide (généralement un dépôt nu ), ce dépôt en amont n'a pas de branche du même nom.
Et:
Dans les deux cas, puisque le dépôt vide en amont n'a pas de branche:
- il n'y a pas encore de branche nommée correspondante
- il n'y a pas de branche amont du tout (avec ou sans le même nom! Suivi ou pas)
Cela signifie que votre première poussée locale n'a aucune idée:
- où pousser
- ce qu'il faut pousser (car il ne trouve aucune branche en amont enregistrée comme une branche de suivi à distance et / ou ayant le même nom)
Vous devez donc au moins faire un:
git push origin master
Mais si vous ne faites que cela, vous:
- va créer une
master
branche amont sur l'amont (désormais repo non vide): bien.
- n'enregistrera pas que la branche locale «
master
» doit être poussée vers upstream ( origin
) master
»(branche amont): mauvais.
C'est pourquoi il est recommandé, pour la première poussée, de faire un:
git push -u origin master
Cela enregistrera origin/master
une branche de suivi à distance , et permettra la prochaine poussée de pousser automatiquement master
à origin/master
.
git checkout master
git push
Et cela fonctionnera aussi avec les politiques push ' current
' ou ' upstream
'.
Dans chaque cas, après l'initiale git push -u origin master
, un simple push git suffira pour continuer à pousser master vers la branche amont droite.
push.default
, voirman git-config
). Si vous le faitesgit config --add push.default current
, alorsgit push
créera automatiquement la branche dans le dépôt distant si nécessaire. Pourquoi ce n'est pas la valeur par défaut est expliqué dans les réponses.