วิธี "ดึง" จากสาขาท้องถิ่นไปยังอีกสาขาหนึ่งได้อย่างไร


231

ฟังดูง่ายมาก แต่ฉันก็ไม่สามารถเข้าใจได้ ฉันสร้างสาขาทดลองขึ้นเมื่อไม่นานมานี้และตอนนี้ฉันต้องการดึงการเปลี่ยนแปลงทั้งหมดที่เกิดขึ้นกับเจ้านายมาตั้งแต่ฉันสร้างมันขึ้นมา นี่คือท้องถิ่นทั้งหมด ฉันต้องการดึงผู้เชี่ยวชาญจากท้องถิ่นเข้าสู่ my_branch ในพื้นที่ แต่ฉันไม่สามารถทำได้ ดูเหมือนจะไม่ทำงานบอกฉันว่าอาจารย์ไม่ใช่ที่เก็บคอมไพล์:

git pull master

คำตอบ:


339

คุณต้องบอกคอมไพล์ที่จะดึงจากในกรณีนี้จากไดเรกทอรี / พื้นที่เก็บข้อมูลปัจจุบัน:

git pull . master

แต่เมื่อทำงานในพื้นที่คุณมักจะโทรหาการรวม (ดึงการรวมสายภายใน):

git merge master

1
ฉันชอบgit pull . masterเพราะฉันคิดว่ามันจะตรวจสอบว่ามีอะไรใหม่จากแหล่งกำเนิดเช่นกัน มันเป็นเรื่องจริงเหรอ?
Josiah Yoder

1
@JosiahYoder no pull .บอกให้ Git ดึงเฉพาะจากที่เก็บข้อมูลที่ตั้งอยู่ที่.(เช่นไดเรกทอรี / พื้นที่เก็บข้อมูลปัจจุบัน) originเป็นเพียงการจดชวเลข "ตำแหน่งที่เก็บข้อมูลใดก็ตามที่กำหนดไว้ใน.git/configไฟล์ (โดยปกติจะตั้งค่าโดยอัตโนมัติเมื่อทำการโคลนที่เก็บ)
4324

1
Oh! ดังนั้นgit pull . masterจะดึงจากพื้นที่เก็บข้อมูลในพื้นที่แทนการกำเนิด? (ไม่สามารถดึงข้อมูลจากแหล่งกำเนิด !?) มีประโยชน์ใด ๆgit pull . masterมากกว่าgit merge masterแล้ว?
Josiah Yoder

2
@JosiahYoder ใช่แน่นอนว่ามันจะ "ดึง" จากที่เก็บข้อมูลในเครื่องแทนที่จะเป็นที่เก็บต้นฉบับ ไม่มีการดึงข้อมูล (เพราะทุกอย่างจากที่เก็บในเครื่องอยู่ที่นี่แล้ว!) ไม่มีข้อได้เปรียบ - ทั้งสองคำสั่งทำเหมือนกันมากหรือน้อย หากคุณกำลังดำเนินการไปข้างหน้าอย่างรวดเร็วคุณสามารถใช้push . origin/branch:branch(ไม่ดึง) เพื่ออัปเดตสาขาท้องถิ่นโดยไม่ต้องตรวจสอบก่อน
knittl

ฉันสรรเสริญเธอ ด้วยพลังของ Greyskull!
R Claven

45

สิ่งที่คุณกำลังมองหาคือการผสาน

git merge master

ด้วยpullคุณดึงการเปลี่ยนแปลงจากพื้นที่เก็บข้อมูลระยะไกลและรวมเข้ากับสาขาปัจจุบัน


38

โพสต์ค่อนข้างเก่า แต่อาจช่วยคนใหม่ในคอมไพล์

ฉันจะไปกับ

git rebase master
  • ประวัติการบันทึกที่สะอาดกว่าและไม่มีการรวม (ถ้าทำอย่างถูกต้อง)
  • ต้องจัดการกับความขัดแย้ง แต่ก็ไม่ยาก

1
มีหลายวิธีที่ทีมพัฒนาต้องจัดการกระบวนการแยกย่อยของพวกเขา โดยส่วนตัวฉันใช้คอมไพล์มา 8 ปีแล้วและฉันไม่เคยต้องรีบูตเลย ฉันใช้การผสานเสมอและตรงกับความต้องการของฉันเสมอ แน่นอนว่าเมื่อมีการรีบูตเช่นเดียวกับการรวมสถานการณ์อาจเกิดขึ้นเมื่อคอมไพล์ไม่สามารถตัดสินผลลัพธ์ที่ถูกต้องโดยการ "รวม" การเปลี่ยนแปลงสองชุดเข้าด้วยกัน เกี่ยวกับประเด็นที่คุณทำเกี่ยวกับประวัติ "ทำความสะอาด" โดยส่วนตัวแล้วการตั้งค่าของฉันคือการรักษาประวัติศาสตร์การกระทำทั้งหมดในกรณีที่ฉันต้องทำ "การกระทำโบราณคดี" (มักจะเกิดขึ้น!)
user3441604

-1

หากคุณกำลังมองหา pull ใหม่ล่าสุดจากสาขาอื่นเช่นจาก local to master คุณสามารถติดตามได้

git commit -m "Initial Commit"
git add .
git pull --rebase git_url
git push origin master
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.