มีหลายวิธีในการตั้งค่าอัปสตรีมขณะที่กดหรือไม่ดันในเวลาเดียวกัน
หากmagit-push-current-set-remote-if-missing
ไม่ใช่ - nil
(ค่าเริ่มต้น) คุณจะเห็นสิ่งต่อไปนี้:
Push feature to
p pushRemote, after setting that
u @{upstream}, after setting that
e elsewhere
หากต้องการผลักดันorigin/feature
และตั้งค่าให้เป็นแบบอัปสตรีมให้กดuจากนั้นRETให้ยอมรับตัวเลือกเริ่มต้นที่สมบูรณ์
ถ้าmagit-push-current-set-remote-if-missing
เป็นnil
เช่นนั้นคุณจะเห็นสิ่งนี้แทน:
Push feature to
e elsewhere
หากคุณกดpตอนนี้คุณจะได้รับแจ้งว่าไม่มีการกำหนดค่าอัปสตรีม (หมายความว่าคุณไม่สามารถกดไปที่อัปสตรีมหากไม่มีอัปสตรีม)
แต่ถ้าmagit-push-current-set-remote-if-missing
เป็นnil
เช่นนั้นรายการของสวิตช์จะมีคุณสมบัติ--set-upstream
ดังนั้นคุณสามารถใช้P - u pตามที่คุณคุ้นเคยกับ (ยกเว้นว่า p ที่สองเป็นตัวพิมพ์เล็ก) แม้ว่าจะมีความซับซ้อนอยู่หนึ่งอย่าง: หลังจากเปลี่ยนค่าของmagit-push-current-set-remote-if-missing
คุณแล้วคุณต้องรีสตาร์ท Emacs เพื่อ--set-upstream
ให้ปรากฏหรือหายไป
ในที่สุดคุณสามารถตั้งค่าต้นน้ำโดยใช้ "ชุดต้นน้ำ (และทำอะไรอย่างอื่น) b uorigin/master
RETคำสั่ง": โปรดทราบว่าเมื่อคุณใช้วิธีการนี้คุณจะสามารถเลือกสาขาที่มีอยู่แล้วเท่านั้น
แต่มันจะเป็นการดีกว่าถ้าจะกำหนดค่า push-remote และผลักไปที่นั้น หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ push-remote และความแตกต่างจากอัปสตรีมให้ดูที่โหนดการแตกสาขาในคู่มือข้อมูล (เวอร์ชั่นเว็บยังไม่ได้รับการอัปเดต)
โดยทั่วไปสาขาต้นน้ำเป็นสาขาเป็นที่สาขาคุณลักษณะของคุณจะได้รับการควบรวมกิจการ (โดยการผสานหรือ rebasing ไม่ได้โดยการผลักดัน) origin/master
ส่วนใหญ่มีแนวโน้ม และรีโมทกดคือที่ที่คุณผลักดันฟีเจอร์ของคุณไปที่ในขณะที่ยังทำงานกับมันอยู่หรือเพื่อให้คนอื่นสามารถรวมมันได้ หากชื่อสาขาในพื้นที่มีชื่อfeature
และ push-remote อยู่my-fork
แล้วการผลักสาขานั้นโดยใช้P pจะเป็นการพุmy-fork/feature
ช (ไม่สามารถกำหนดค่า "push-to-branch" ชื่อของสาขาบน push-remote จะเหมือนกับชื่อโลคอลเสมอ)
ดังนั้นในขณะที่คำถามของคุณมีลักษณะคล้ายกับ "ฉันจะผลักดันไปยังต้นน้ำได้อย่างไรในขณะที่กำหนดค่าต้นน้ำในเวลาเดียวกัน" คำแนะนำของฉันคือไม่ผลักไปที่ต้นน้ำเลย แต่จะผลักดันระยะไกลแทน
มีให้คุณไม่ได้เปลี่ยนค่าของคุณสามารถกำหนดค่าการผลักดันระยะไกลโดยใช้magit-push-current-set-remote-if-missing
P psome-remote
RETแต่เนื่องจากคุณมีแนวโน้มที่จะผลักดันฟีเจอร์กิ่งไม้ทั้งหมดไปยังรีโมตเดียวกันจึงเป็นการดีกว่าที่จะตั้งค่ารีโมตกดหนึ่งครั้งสำหรับทุกสาขาและทำได้ด้วย: bจากนั้นM-pจนกว่าจะเลือกรีโมตที่เหมาะสม
โปรดทราบด้วยว่าโดยปกติแล้วไม่ควรจำเป็นที่จะต้องตั้งสาขาต้นน้ำอย่างชัดเจน เมื่อคุณสร้างสาขาใหม่และเลือกสาขาระยะไกลเป็นจุดเริ่มต้นจากนั้นจะใช้เป็นอัปสตรีม
น่าเสียดายที่จุดเริ่มต้นมักเป็นสาขาในพื้นที่และในกรณีนั้น Git โดยค่าเริ่มต้นจะไม่ใช้เป็นอัปสตรีม แต่นั่นสามารถแก้ไขได้อย่างง่ายดายด้วยการรันเพียงครั้งเดียว:
git config --global branch.autoSetupMerge always
ค่าเริ่มต้นคือtrue
ซึ่งหมายความว่า "ตั้งค่าจุดเริ่มต้นเป็นอัปสตรีมหากเป็นสาขาระยะไกล "
โดยวิธีการเดียวกันนี้ใช้กับ push-remote โดยปกติควรตั้งค่ากึ่งอัตโนมัติในที่เก็บ "ใหม่" หากคุณโคลนที่เก็บข้อมูลคุณจะถูกถามว่าคุณต้องการใช้origin
เป็น push-remote หรือไม่ คุณควรตอบว่า "ใช่" นอกจากว่าคุณกำลังจะเพิ่มรีโมตอื่นให้พูดmy-fork
ซึ่งควรใช้เป็น push-remote เมื่อคุณเพิ่มรีโมตใหม่โดยใช้M aและremote.pushDefault
ยังไม่ได้ตั้งค่าคุณจะถูกถามว่าคุณต้องการใช้รีโมตที่เพิ่มใหม่เป็น push-remote หรือไม่
นี้สามารถกำหนดค่าการใช้และmagit-clone-set-remote.pushDefault
magit-remote-add-set-remote.pushDefault
อีกหนึ่งทางเลือกที่ทันสมัยซึ่งเริ่มต้นที่magit-branch-prefer-remote-upstream
nil
หากคุณตั้งค่าเป็นt
แล้วเลือกสาขาท้องถิ่นเป็นจุดเริ่มต้นสำหรับสาขาใหม่จากนั้นอัปสตรีมของจุดเริ่มต้นอาจ (ตามกฎบางข้อดูที่ doc-string) ใช้เป็นอัปสตรีมแทน จุดเริ่มต้นเอง
<remote>/<branch>
ส่วนนั้นหลุดออกจากพรอมต์โดยไม่ตั้งใจ (ดูความคิดเห็นนี้ ) ในระหว่างนี้คุณสามารถตั้งค่าmagit-push-current-set-remote-if-missing
เป็นศูนย์