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
master
ramo 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/master
come un ramo di tracciamento remoto e consentirà alla spinta successiva di passare automaticamente master
a 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 push
creerà automaticamente il ramo nel repository remoto, se necessario. Perché questo non è il valore predefinito è spiegato nelle risposte.