เหตุผลที่แท้จริงคือใน 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เป็นสาขาการติดตามระยะไกลและจะช่วยผลักดันต่อไปที่จะผลักดันโดยอัตโนมัติเพื่อmasterorigin/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 ระยะไกลโดยอัตโนมัติหากจำเป็น ทำไมนี่ไม่ใช่ค่าเริ่มต้นอธิบายในคำตอบ