การอัปเดตที่เก็บในเครื่องด้วยการเปลี่ยนแปลงจากที่เก็บ GitHub


567

ฉันได้รับการตรวจสอบโครงการในพื้นที่จาก GitHub และที่เก็บระยะไกลนั้นมีการเปลี่ยนแปลงเกิดขึ้น คำสั่งที่ถูกต้องในการอัพเดตสำเนาโลคัลของฉันด้วยการเปลี่ยนแปลงล่าสุดคืออะไร


26
มันน่าสังเกตว่า GitHub ได้จัดทำชุดของคู่มือที่ให้ข้อมูลและเป็นประโยชน์มากสำหรับการใช้ Git และ GitHub ฉันพบว่ามันมีค่าเมื่อฉันทำการย้ายไปคอมไพล์ help.github.com
Mark Embling

คำตอบ:


791

อาจ:

git pull origin master

28
มันบ่น: "คุณขอให้ดึงจาก 'กำเนิด' ระยะไกล แต่ไม่ได้ระบุสาขาเพราะนี่ไม่ใช่ค่าเริ่มต้นกำหนดค่าระยะไกลสำหรับสาขาปัจจุบันของคุณคุณต้องระบุสาขาในบรรทัดคำสั่ง" ดังนั้นฉันจึงลอง "ต้นกำเนิดดึงต้นกำเนิด $ $ git" และใช้งานได้ดี
Juan Lanus

8
git pull origin master
Andrzej Rehmann

1
ฉันลบไฟล์บางไฟล์แล้วและมันไม่ได้นำมาซึ่งความคิดใด ๆ อีกหรือไม่
กุมภ์

1
เราจะคอมไพล์คอมมิทก่อนเรียกใช้สิ่งนี้หรือไม่? ทุกครั้งที่ฉันรันคำสั่งนี้ฉันจะจบลงด้วยไฟล์ที่แก้ไขแล้ว 18347213846 ที่ฉันไม่แตะแม้แต่ !!!
Orkun Ozen

5
ฉันเพิ่งเรียนรู้วิธีที่ยากที่จะดึงสาขาที่เก็บข้อมูลรีโมตใหม่ไม่ได้สร้างสาขาของชื่อนั้นในท้องที่ แต่ดึงสาขาระยะไกลนั้นเข้าสาขาสิ่งที่เกิดขึ้นในท้องถิ่นเพื่อทำการเช็คเอาท์ ฉันไม่แน่ใจว่าจะยกเลิกการย่อและการโคลนที่เก็บซ้ำอีกครั้งได้อย่างไร ไม่ว่าในกรณีใดก็ตามดูเหมือนว่าสาขาในพื้นที่จะเป็นอิสระจากสาขาระยะไกลและควรตรวจสอบให้แน่ใจว่าคุณอยู่ในสาขาท้องถิ่นก่อนที่จะดึง
Joe Lapp

87

สิ่งนี้จะใช้ได้กับ repo ที่เป็นค่าเริ่มต้นทุกครั้ง:

git pull origin master

หากสาขาเริ่มต้นของคุณแตกต่างจากmasterคุณจะต้องระบุชื่อสาขา:

git pull origin my_default_branch_name

2
ไม่ได้จริงๆ ร้ายแรง: ไม่พบต้นแบบการอ้างอิงจากระยะไกล
Victor Eijkhout

1
@Eijkhout probablt ในกรณี repo ของคุณไม่มีสาขาหลักและตั้งสาขาอื่นเป็นค่าเริ่มต้น
Andrzej Rehmann

62
git fetch [remotename]

อย่างไรก็ตามคุณจะต้องรวมการเปลี่ยนแปลงในสาขาท้องถิ่นของคุณ หากคุณอยู่ในสาขาที่ติดตามสาขาระยะไกลใน Github

git pull

จะทำการดึงข้อมูลก่อนแล้วจึงรวมในสาขาที่ติดตาม


5
หากคุณใช้git fetchวิธีนี้คุณจะต้องดึงแท็กด้วยgit fetch -tวิธีการนี้คุณยังจะต้องการที่จะดึงข้อมูลแท็กที่มีหากคุณมีความพึงพอใจกับการเปลี่ยนแปลง ( git log HEAD..FETCH_HEAD) git merge FETCH_HEADแล้วคุณสามารถผสานพวกเขาด้วย
Brad Grissom

16

คำถามนี้เป็นคำถามทั่วไปและมีข้อสมมติฐานสองสามข้อที่ฉันจะทำให้มันง่ายขึ้นเล็กน้อย เราจะสมมติว่าคุณต้องการอัปเดตmasterสาขาของคุณ

หากคุณไม่ได้ทำการเปลี่ยนแปลงใด ๆ ในพื้นที่ที่คุณสามารถใช้git pullเพื่อนำมาลงใหม่กระทำใด ๆ masterและเพิ่มให้คุณ

git pull origin master

git pull --rebaseหากคุณได้ทำการเปลี่ยนแปลงและคุณต้องการที่จะหลีกเลี่ยงการเพิ่มผสานใหม่กระทำการใช้งาน

git pull --rebase origin master

git pull --rebase จะทำงานแม้ว่าคุณจะไม่ได้ทำการเปลี่ยนแปลงและอาจเป็นการโทรที่ดีที่สุดของคุณ


1
rebase และอันตรายของ rebase นี้: atlassian.com/git/tutorials/rewriting-history/git-rebase ย่อหน้าที่ 2 และ 3 ของ "การเข้าใจถึงอันตรายของการคืนเงิน" ทำให้ฉันพลาดชุดคำสั่งของ SVN
WillC

9

ด้วยต้นแบบดั้งเดิมที่ตั้งค่าไว้แล้วคุณเพียงแค่ต้องใช้คำสั่งด้านล่าง -

git pull "https://github.com/yourUserName/yourRepo.git"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.