อัปเดตสาขาท้องถิ่นด้วยการเปลี่ยนแปลงจากสาขาระยะไกลที่ติดตาม


105

ฉันมีสาขาในประเทศที่ชื่อว่า ' my_local_branch' origin/my_remote_branchซึ่งติดตามสาขาระยะไกล

ตอนนี้สาขาระยะไกลได้รับการอัปเดตแล้วและฉันอยู่ใน ' my_local_branch' และต้องการดึงการเปลี่ยนแปลงเหล่านั้น ฉันควรทำอย่างไร:

git pull origin my_remote_branch:my_local_branch

นี้เป็นวิธีที่ถูกต้องหรือไม่?

คำตอบ:


75

คุณได้ตั้งค่าต้นน้ำของสาขานั้น

(ดู:

สาขา git -f - ติดตาม my_local_branch ต้นทาง / my_remote_branch
# หรือ (หาก my_local_branch ถูกเช็คเอาต์ในขณะนี้):
สาขา $ git - set-upstream-to my_local_branch origin / my_remote_branch

( git branch -f --trackจะใช้ไม่ได้ถ้าสาขาถูกเช็คเอาต์ให้ใช้คำสั่งที่สองgit branch --set-upstream-to แทนมิฉะนั้นคุณจะได้รับ " fatal: Cannot force update the current branch.")

นั่นหมายความว่าสาขาของคุณได้รับการกำหนดค่าแล้วด้วย:

branch.my_local_branch.remote origin
branch.my_local_branch.merge my_remote_branch

Git มีข้อมูลที่จำเป็นทั้งหมดอยู่แล้ว
ในกรณีนั้น:

# if you weren't already on my_local_branch branch:
git checkout my_local_branch 
# then:
git pull

ก็เพียงพอแล้ว


หากคุณไม่ได้สร้างความสัมพันธ์สาขาต้นน้ำนั้นเมื่อมันมาถึงการผลักดัน '' ของคุณmy_local_branchสิ่งง่ายๆgit push -u origin my_local_branch:my_remote_branchก็เพียงพอแล้วที่จะผลักดันและตั้งสาขาต้นน้ำ
หลังจากนั้นสำหรับการดึง / ดันในภายหลังgit pullหรือgit pushอีกครั้งก็เพียงพอแล้ว


OP ระบุว่าพวกเขากำลังติดตามสาขาระยะไกลอยู่แล้ว
Amber

7
@ แอมเบอร์ดังนั้นคำตอบของฉัน: git pullเพียงพอแล้ว
VonC

คำสั่งแรกgit branch -f --track master origin/masterส่งกลับข้อผิดพลาด:fatal: Cannot force update the current branch.
Mark Kramer

@MarkKramer ใช่ฉันได้แก้ไขคำตอบเพื่อให้ชัดเจนยิ่งขึ้นคำสั่งที่สองคือจะใช้ถ้าสาขาในพื้นที่ถูกเช็คเอาต์
VonC

นอกจากนี้คุณควรเปลี่ยนไป--set-upstream-to, --set-upstreamจะเลิกและจะถูกกำจัดออกไป
Mark Kramer

94

คุณไม่ได้ใช้:ไวยากรณ์ - pullแก้ไขสาขาที่เช็คเอาต์ในปัจจุบันเสมอ ดังนั้น:

git pull origin my_remote_branch

ในขณะที่คุณชำระเงินmy_local_branchแล้วจะทำในสิ่งที่คุณต้องการ

เนื่องจากคุณมีชุดสาขาการติดตามอยู่แล้วคุณจึงไม่จำเป็นต้องระบุ - คุณสามารถทำได้ ...

git pull

ในขณะที่คุณชำระเงินmy_local_branchแล้วและจะอัปเดตจากสาขาที่ติดตาม


1
นี่น่าจะเป็นคำตอบที่ถูกต้อง ง่ายๆแค่นั้นเอง
m4l490n
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.