ฉันได้รับข้อความนี้จาก Git:
คุณขอให้ดึงจาก 'ต้นทาง' ระยะไกล แต่ไม่ได้ระบุสาขา เนื่องจากนี่ไม่ใช่รีโมตที่กำหนดค่าเริ่มต้นสำหรับสาขาปัจจุบันของคุณคุณต้องระบุสาขาในบรรทัดคำสั่ง
ใครช่วยอธิบายหน่อย และที่สำคัญจะแก้ไขอย่างไร?
ฉันได้รับข้อความนี้จาก Git:
คุณขอให้ดึงจาก 'ต้นทาง' ระยะไกล แต่ไม่ได้ระบุสาขา เนื่องจากนี่ไม่ใช่รีโมตที่กำหนดค่าเริ่มต้นสำหรับสาขาปัจจุบันของคุณคุณต้องระบุสาขาในบรรทัดคำสั่ง
ใครช่วยอธิบายหน่อย และที่สำคัญจะแก้ไขอย่างไร?
คำตอบ:
คุณต้องบอกคอมไพล์ว่าคุณต้องการดึงสาขาใดจาก repos ระยะไกล "ต้นทาง"
ฉันเดาว่าคุณต้องการสาขาเริ่มต้น (หลัก) ดังนั้นgit pull origin master
ควรแก้ไขปัญหาของคุณ
ดูgit help branch
, git help pull
และgit help fetch
สำหรับรายละเอียดเพิ่มเติม
git pull
ดึงและรวมเข้ากับสาขาปัจจุบันดังนั้นพฤติกรรมของมันจึงขึ้นอยู่กับสาขาที่ถูกเช็คเอาต์และด้วย HEAD ที่แยกออกมา (ไม่มีการเช็คเอาท์สาขา) ไม่มีทางที่จะรู้ได้ว่าจะดึงสาขาใด
ในการแก้ไขสมมติว่าคุณอยู่ในmaster
สาขาและต้องการดึงmaster
สาขาจากorigin
ระยะไกลใน Git เวอร์ชันใหม่ที่เพียงพอ (1.8 หรือใหม่กว่า):
git branch -u origin/master master
(แบบอะนาล็อกสำหรับสาขาอื่น ๆ และ / หรือรีโมท)
หากคุณสามารถรวมสิ่งนี้เข้ากับการผลักดันก็ยิ่งสั้นลง:
git push -u origin master
หลังจากนั้นธรรมดาgit pull
/ git push
จะทำในสิ่งที่คุณคาดหวัง
ในซีรีส์ Git 1.7 git branch
ไม่มี-u
สวิตช์ ( git push
ทำเท่านั้น) และคุณต้องใช้สิ่งที่ยาวกว่านี้แทน--set-upstream
:
git branch --set-upstream master origin/master
หมายเหตุ: -u
การกลับรายการของการขัดแย้งเมื่อเทียบกับ ฉันคลำคำสั่งซื้อนี้มากกว่าหนึ่งครั้ง
ทั้งหมดนี้เป็นข้อสรุปสำหรับการทำสิ่งต่อไปนี้ซึ่งคุณยังสามารถทำได้อย่างชัดเจน:
git config branch.master.remote origin
git config branch.master.merge refs/heads/master
ก่อน 1.7 คุณต้องทำแบบนี้
git branch --set-upstream master origin/master
-u
คือตัวเลือกนี้ไม่มีเอกสารgit branch
ในเวอร์ชัน 1.8.5.3 ของฉันทำให้เอกสารของคุณมีความสำคัญมากยิ่งขึ้น และตามที่คุณทราบตัวเลือกนี้ไม่สามารถใช้งานได้ในเวอร์ชัน 1.7 * เนื่องจาก-u
ย่อมา--set-upstream
จากคำสั่งของข้อโต้แย้งไม่ควรย้อนกลับอย่างที่คุณทำ--set-upstream
เนื่องจากความคิดเห็นของ @ EvanDonovan?
git branch -u origin/master master
) มันทำงานตามที่คาดหวัง / ตั้งใจไว้สำหรับฉัน: "Branch master set up to track remote branch master from origin"
-u
สวิทช์เป็นจริงไม่ได้เป็นรูปแบบสั้น --set-upstream
ๆ --set-upstream
คำสั่งของการขัดแย้งเป็นสิ่งที่ตรงกันข้ามอย่างมีประสิทธิภาพจากเพื่อให้ ฉันคิดว่าในภายหลังมีการเปิดตัว--set-upstream-to
(สังเกต "-to") ซึ่ง-u
ตอนนี้เป็นรูปแบบสั้น ๆ ของ
ข้อความบอกว่ามันเกี่ยวกับอะไร สาขาปัจจุบันของคุณจะไม่เกี่ยวข้องกับ (ไม่ติดตาม) สาขาใด ๆ ในแหล่งกำเนิด คอมไพล์เลยไม่รู้จะดึงอะไร
จะทำอย่างไร? ขึ้นอยู่กับ ...
ในสถานการณ์ปกติส่วนใหญ่คุณกำลังดำเนินการxyzสาขาในพื้นที่ซึ่งแตกแขนงมาจากมาสเตอร์ซึ่งโคลนมาจากต้นแบบของแหล่งกำเนิด วิธีการปกติในการแก้ไขก็คือการเปลี่ยนไปใช้ต้นแบบและดึงการประสานกับแหล่งที่มาและจากนั้นกลับมาที่xyzrebase master
และ
แต่ในสถานการณ์ของคุณคุณอาจต้องการทำอย่างอื่น เราไม่สามารถทราบได้หากไม่ทราบรายละเอียดของสาขาและรีโมทของคุณและวิธีที่คุณต้องการใช้