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-
master
Zweig 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/master
als Remote - Tracking - Zweig , und bei den nächsten Push aktivieren , um automatisch schieben master
zu 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 master
Schritt ein einfacher Git-Push aus, um den Master weiter in den rechten Upstream-Zweig zu schieben.
push.default
sieheman git-config
). Wenn Sie dies tungit config --add push.default current
,git push
wird bei Bedarf automatisch der Zweig im Remote-Repo erstellt. Warum dies nicht die Standardeinstellung ist, wird in den Antworten erläutert.