Der eigentliche Grund ist, dass es in einem neuen Repo (git init) keine Verzweigung gibt (nein master, überhaupt keine Verzweigung, keine Verzweigungen)
Wenn Sie also zum ersten Mal auf ein leeres Upstream-Repo (im Allgemeinen ein nacktes ) drängen , hat dieses Upstream-Repo keinen gleichnamigen Zweig.
Und:
In beiden Fällen, da das vorgelagerte leere Repo keine Verzweigung hat:
- Es gibt noch keinen passenden benannten Zweig
- Es gibt überhaupt keine vorgelagerte Niederlassung (mit oder ohne gleichen Namen! Tracking oder nicht)
Das heißt, Ihr lokaler erster Push hat keine Ahnung:
- wo zu schieben
- was zu pushen ist (da kein Upstream-Zweig gefunden werden kann, der entweder als Remote-Tracking-Zweig aufgezeichnet wurde und / oder denselben Namen hat)
Sie müssen also mindestens Folgendes tun:
git push origin master
Aber wenn Sie nur das tun, werden Sie:
- erstellt einen Upstream-
masterZweig im Upstream (jetzt nicht leeres Repo): gut.
- wird nicht aufzeichnen, dass der lokale Zweig '
master' nach upstream ( origin) ' master' (vorgelagerter Zweig) verschoben werden muss: schlecht.
Aus diesem Grund wird empfohlen, beim ersten Druck Folgendes zu tun:
git push -u origin master
Das wird aufgezeichnet origin/masterals Remote - Tracking - Zweig , und bei den nächsten Push aktivieren , um automatisch schieben masterzu origin/master.
git checkout master
git push
Und das wird auch mit Push-Richtlinien funktionieren. 'current ' oder ' upstream'.
In jedem Fall reicht nach dem ersten git push -u origin masterSchritt ein einfacher Git-Push aus, um den Master weiter in den rechten Upstream-Zweig zu schieben.
push.defaultsieheman git-config). Wenn Sie dies tungit config --add push.default current,git pushwird bei Bedarf automatisch der Zweig im Remote-Repo erstellt. Warum dies nicht die Standardeinstellung ist, wird in den Antworten erläutert.