ขั้นตอนที่คุณระบุไว้จะใช้งานได้ แต่มีวิธีอีกมากมายที่ให้ตัวเลือกเพิ่มเติมแก่คุณ:
git checkout dmgr2 # gets you "on branch dmgr2"
git fetch origin # gets you up to date with origin
git merge origin/master
fetch
คำสั่งที่สามารถทำได้ที่จุดใดก่อนmerge
เช่นคุณสามารถสลับคำสั่งของดึงข้อมูลและเช็คเอาท์เพราะfetch
เพียงแค่ไปมากกว่าที่จะตั้งชื่อระยะไกล ( origin
) และบอกว่ามัน "ทุกอย่างไม่น่าเชื่อคุณได้ว่าฉันทำไม่ได้ "คือทั้งหมดกระทำในทุกสาขา พวกมันจะถูกคัดลอกไปยังที่เก็บของคุณ แต่ตั้งชื่อorigin/branch
ให้กับสาขาใด ๆ ที่ตั้งชื่อbranch
บนรีโมต
ณ จุดนี้คุณสามารถใช้ตัวแสดงใด ๆ ( git log
, gitk
ฯลฯ ) เพื่อดู "สิ่งที่พวกเขามี" ที่คุณทำไม่ได้และในทางกลับกัน บางครั้งสิ่งนี้มีประโยชน์สำหรับ Warm Fuzzy Feelings ("อ๊ะใช่นั่นคือสิ่งที่ฉันต้องการ") และบางครั้งมันมีประโยชน์สำหรับการเปลี่ยนกลยุทธ์ทั้งหมด ("โอ้โหฉันยังไม่ต้องการสิ่งนั้น")
สุดท้ายmerge
คำสั่งจะใช้เวลาที่กำหนดกระทำซึ่งคุณสามารถตั้งชื่อเป็นและไม่สิ่งที่มันจะนำมาในการที่กระทำและบรรพบุรุษของตนเพื่อสิ่งที่สาขาที่คุณอยู่ในเมื่อคุณเรียกใช้origin/master
merge
คุณสามารถแทรก--no-ff
หรือ--ff-only
ป้องกันการกรอไปข้างหน้าหรือรวมเฉพาะในกรณีที่ผลลัพธ์เป็นการกรอไปข้างหน้าหากต้องการ
เมื่อคุณใช้ลำดับ:
git checkout dmgr2
git pull origin master
pull
สั่งคำสั่ง git วิ่งแล้วเทียบเท่าคุณธรรมของgit fetch
git merge origin/master
ดังนั้นนี่เกือบจะเหมือนกับการทำสองขั้นตอนด้วยมือ แต่มีความแตกต่างเล็กน้อยที่อาจไม่เกี่ยวข้องกับคุณ (โดยเฉพาะอย่างยิ่งfetch
ขั้นตอนที่ดำเนินการโดยpull
นำมาเท่านั้น origin/master
และจะไม่อัปเดตการอ้างอิงใน repo ของคุณ: 1มีความมุ่งมั่นใหม่ ๆ ที่อ้างถึงโดยFETCH_HEAD
อ้างอิงพิเศษเท่านั้น)
หากคุณใช้ความชัดเจนมากขึ้นgit fetch origin
(จากนั้นเลือกดูรอบ ๆ ) จากนั้นgit merge origin/master
เรียงลำดับคุณยังสามารถนำท้องถิ่นของคุณmaster
มาอัพเดทด้วยรีโมทด้วยการfetch
วิ่งเพียงครั้งเดียวผ่านเครือข่าย:
git fetch origin
git checkout master
git merge --ff-only origin/master
git checkout dmgr2
git merge --no-ff origin/master
เช่น
1ส่วนที่สองนี้ได้รับการเปลี่ยนแปลง - ฉันพูดว่า "แก้ไข" - ใน git 1.8.4 ซึ่งตอนนี้อัปเดตการอ้างอิง "remote branch" อ้างอิงอย่างฉวยโอกาส (ตามที่บันทึกในรีลีสกล่าวว่าการตัดสินใจออกแบบโดยเจตนาเพื่อข้ามการอัปเดต แต่ปรากฎว่ามีคนชอบ git มากกว่านั้นหากคุณต้องการ SHA-1 สาขาระยะไกลเก่าค่าเริ่มต้นจะถูกบันทึกไว้ใน และสามารถกู้คืนได้จาก reflog ซึ่งจะช่วยให้คุณลักษณะ git 1.9 / 2.0 ใหม่สำหรับการค้นหา rebases ต้นน้ำ)