Il vero motivo è che, in un nuovo repository (git init), non esiste un ramo (no master, nessun ramo, zero rami)
Così, quando si sta spingendo per la prima volta a un vuoto di pronti contro termine a monte (generalmente una spoglia uno ), che repo a monte non ha ramo con lo stesso nome.
E:
In entrambi i casi, poiché il repository vuoto a monte non ha alcun ramo:
- non esiste ancora un ramo con nome corrispondente
- non esiste alcun ramo a monte (con o senza lo stesso nome! Tracciamento o meno)
Ciò significa che la tua prima spinta locale non ha idea:
- dove spingere
- cosa spingere (poiché non riesce a trovare alcun ramo a monte registrato o come ramo di tracciamento remoto e / o con lo stesso nome)
Quindi devi almeno fare un:
git push origin master
Ma se fai solo quello, tu:
- creerà un
masterramo upstream sull'upstream (ora repository non vuoto): buono.
- non registra che il ramo locale '
master' deve essere trasferito a monte ( origin) ' master' (ramo a monte): cattivo.
Ecco perché si consiglia, per la prima volta, di fare un:
git push -u origin master
Ciò verrà registrato origin/mastercome un ramo di tracciamento remoto e consentirà alla spinta successiva di passare automaticamente mastera origin/master.
git checkout master
git push
E funzionerà anche con le politiche push ' current' o ' upstream'.
In ogni caso, dopo l'iniziale git push -u origin master, sarà sufficiente una semplice git push per continuare a spingere il master verso il ramo upstream destro.
push.default, vedereman git-config). In tal casogit config --add push.default current,git pushcreerà automaticamente il ramo nel repository remoto, se necessario. Perché questo non è il valore predefinito è spiegato nelle risposte.