Lý do thực tế là, trong một repo mới (git init), không có nhánh nào (không master
, không có nhánh nào cả, nhánh không)
Vì vậy, khi bạn lần đầu tiên đẩy một repo ngược dòng trống rỗng (nói chung là một trần trống ), repo ngược dòng đó không có chi nhánh cùng tên.
Và:
Trong cả hai trường hợp, vì repo trống ngược dòng không có nhánh:
- chưa có chi nhánh phù hợp
- hoàn toàn không có nhánh ngược dòng (có hoặc không có cùng tên! Theo dõi hay không)
Điều đó có nghĩa là lần đẩy đầu tiên tại địa phương của bạn không có ý tưởng:
- đẩy ở đâu
- cần đẩy cái gì (vì nó không thể tìm thấy bất kỳ nhánh ngược dòng nào được ghi là nhánh theo dõi từ xa và / hoặc có cùng tên)
Vì vậy, bạn cần ít nhất để làm một:
git push origin master
Nhưng nếu bạn chỉ làm điều đó, bạn:
- sẽ tạo một
master
nhánh ngược dòng trên thượng nguồn (bây giờ là repo không trống): tốt.
- sẽ không ghi lại rằng chi nhánh địa phương '
master
' cần được đẩy lên thượng nguồn ( origin
) ' master
' (chi nhánh thượng nguồn): xấu.
Đó là lý do tại sao nó được khuyến nghị, cho lần đẩy đầu tiên, để thực hiện:
git push -u origin master
Điều đó sẽ ghi lại origin/master
dưới dạng một nhánh theo dõi từ xa và sẽ cho phép lần đẩy tiếp theo tự động đẩy master
tới origin/master
.
git checkout master
git push
Và điều đó cũng sẽ hoạt động với các chính sách đẩy ' current
' hoặc ' upstream
'.
Trong mỗi trường hợp, sau lần khởi đầu git push -u origin master
, một cú đẩy git đơn giản sẽ đủ để tiếp tục đẩy chủ sang nhánh ngược dòng bên phải.
push.default
, xemman git-config
). Nếu bạn làm như vậygit config --add push.default current
, sau đógit push
sẽ tự động tạo chi nhánh trong repo từ xa nếu cần thiết. Tại sao điều này không phải là mặc định được giải thích trong các câu trả lời.