เหตุผลที่แท้จริงคือใน repo ใหม่ (git init) ไม่มีสาขา (ไม่master
ไม่มีสาขาเลยไม่มีสาขา)
ดังนั้นเมื่อคุณกดเป็นครั้งแรกไปยังrepo upstream ที่ว่างเปล่า (โดยทั่วไปคือrepo เปล่า ) repo upstream นั้นไม่มีสาขาที่มีชื่อเดียวกัน
และ:
ในทั้งสองกรณีเนื่องจาก repo ที่ว่างเปล่าต้นน้ำไม่มีสาขา:
- ไม่มีสาขาที่มีชื่อตรงกัน
- ไม่มีสาขาต้นน้ำเลย (มีหรือไม่มีชื่อเดียวกัน! การติดตามหรือไม่)
นั่นหมายความว่าการกดครั้งแรกในพื้นที่ของคุณไม่มีความคิด
- สถานที่ที่จะผลักดัน
- สิ่งที่จะผลักดัน (เนื่องจากไม่พบสาขาอัปสตรีมใด ๆ ที่ถูกบันทึกเป็นสาขาการติดตามระยะไกลและ / หรือมีชื่อเดียวกัน)
ดังนั้นคุณต้องทำอย่างน้อย:
git push origin master
แต่ถ้าคุณทำอย่างนั้นคุณ:
- จะสร้าง
master
สาขาอัปสตรีมบนอัปสตรีม (ตอนนี้ repo ที่ไม่ว่าง): ดี
- จะไม่บันทึกว่าสาขา '
master
' ท้องถิ่นจำเป็นต้องผลักไปที่ upstream ( origin
) ' master
' (upstream branch): ไม่ดี
นั่นคือเหตุผลที่แนะนำสำหรับการกดครั้งแรกเพื่อทำ:
git push -u origin master
ที่จะบันทึกorigin/master
เป็นสาขาการติดตามระยะไกลและจะช่วยผลักดันต่อไปที่จะผลักดันโดยอัตโนมัติเพื่อmaster
origin/master
git checkout master
git push
และนั่นก็จะใช้ได้เช่นกันกับนโยบายการพุช ' current
' หรือ ' upstream
'
ในแต่ละกรณีหลังจากการเริ่มต้นgit push -u origin master
การกด git อย่างง่ายจะเพียงพอที่จะผลักดันมาสเตอร์ไปยังสาขาต้นน้ำด้านขวา
push.default
ดูman git-config
) ถ้าคุณทำgit config --add push.default current
แล้วgit push
จะสร้างสาขาใน repo ระยะไกลโดยอัตโนมัติหากจำเป็น ทำไมนี่ไม่ใช่ค่าเริ่มต้นอธิบายในคำตอบ