Справжня причина полягає в тому, що в новому репо (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
автоматично створіть гілку у віддаленому репо, якщо потрібно. Чому це не за замовчуванням, пояснюється у відповідях.