Справжня причина полягає в тому, що в новому репо (git init) немає гілки (ні master, зовсім немає гілки, нульові гілки)
Отже, коли ви вперше натискаєте на порожнє репо вгору за течією (як правило, голе ), це репо вгору за течією не має гілки з такою ж назвою.
І:
В обох випадках, оскільки порожнє репо вгору за течією не має гілки:
- ще немає відповідної названої гілки
- взагалі немає відділення вгору за течією (з однойменною назвою або без неї! Відстеження чи ні)
Це означає, що ваш локальний перший поштовх не має поняття:
- куди штовхати
- що натиснути (оскільки він не може знайти будь-яку гілку вгору за течією або записати як віддалену гілку відстеження та / або мати таке ж ім’я)
Тож вам потрібно принаймні зробити:
git push origin master
Але якщо ви робите лише це, ви:
- створить
masterгілку вище за течією (зараз не порожнє репо): добре.
- не зафіксує, що локальну гілку '
master' потрібно натиснути на вгору ( origin) ' master' (гілка вище за течією): погано.
Ось чому рекомендується для першого поштовху зробити:
git push -u origin master
Це буде записано origin/masterяк відділення віддаленого відстеження , і дасть можливість наступному натисканню автоматично натиснути masterна origin/master.
git checkout master
git push
І це також буде працювати з політикою push ' current' або ' upstream'.
У кожному випадку, після початкового git push -u origin master, простого натискання git буде достатньо, щоб продовжити натискання ведучого до правої гілки вище за течією.
push.default, див.man git-config). Якщо ви це зробитеgit config --add push.default current, тоgit pushавтоматично створіть гілку у віддаленому репо, якщо потрібно. Чому це не за замовчуванням, пояснюється у відповідях.