Alasan sebenarnya adalah bahwa, dalam repo baru (git init), tidak ada cabang (tidak master, tidak ada cabang sama sekali, nol cabang)
Jadi, ketika Anda mendorong untuk pertama kalinya ke repo hulu kosong (umumnya yang kosong ), repo hulu tidak memiliki cabang dengan nama yang sama.
Dan:
Dalam kedua kasus, karena repo kosong hulu tidak memiliki cabang:
- belum ada cabang bernama yang cocok
- tidak ada cabang hulu sama sekali (dengan atau tanpa nama yang sama! Pelacakan atau tidak)
Itu berarti dorongan lokal pertama Anda tidak tahu:
- ke mana harus mendorong
- apa yang harus didorong (karena tidak dapat menemukan cabang hulu dicatat sebagai cabang pelacakan jarak jauh, dan / atau memiliki nama yang sama)
Jadi, Anda setidaknya perlu melakukan:
git push origin master
Tetapi jika Anda hanya melakukan itu, Anda:
- akan membuat
mastercabang hulu di hulu (sekarang repo tidak kosong): bagus.
- tidak akan mencatat bahwa cabang lokal '
master' perlu didorong ke hulu ( origin) ' master' (cabang hulu): buruk.
Itulah mengapa disarankan, untuk dorongan pertama, untuk melakukan:
git push -u origin master
Itu akan merekam origin/mastersebagai cabang pelacakan jarak jauh , dan akan memungkinkan dorongan berikutnya untuk secara otomatis mendorong masterke origin/master.
git checkout master
git push
Dan itu akan bekerja juga dengan kebijakan push ' current' atau ' upstream'.
Dalam setiap kasus, setelah inisial git push -u origin master, dorongan git yang sederhana akan cukup untuk terus mendorong master ke cabang hulu kanan.
push.default, lihatman git-config). Jika Anda melakukannyagit config --add push.default current, makagit pushsecara otomatis akan membuat cabang di repo jarak jauh jika perlu. Mengapa ini bukan default dijelaskan dalam jawaban.