ฉันจะทำให้สาขาของฉันทันสมัยอยู่เสมอกับ master ด้วย git ได้อย่างไร


126

ฉันมีการแก้ไขข้อบกพร่องในอาจารย์ของฉันและฉันต้องการให้สาขาของฉันได้รับการแก้ไขข้อบกพร่องนั้นด้วย สิ่งที่gitคำสั่งฉันจะใช้งานหรือไม่

คำตอบ:


172

สมมติว่าคุณทำได้ดีกับการเปลี่ยนแปลงทั้งหมดในต้นแบบสิ่งที่คุณต้องการคือ

git checkout <my branch>

เพื่อเปลี่ยนต้นไม้ทำงานเป็นสาขาของคุณ แล้ว:

git merge master

เพื่อรวมการเปลี่ยนแปลงทั้งหมดในต้นแบบเข้ากับของคุณ


5
และนี่เป็นการเพิ่มการเปลี่ยนแปลงจากเจ้านายของฉันเข้าไปในสาขาของฉันและปล่อยให้นายอยู่คนเดียวถูกต้องหรือไม่?
Nic Hubbard

3
@Nic - สิ่งนี้จะนำมาซึ่งการกระทำทั้งหมดจากผู้เชี่ยวชาญไม่ใช่แค่การแก้ไขข้อบกพร่อง ต้องแน่ใจว่านี่คือสิ่งที่คุณต้องการทำ
manojlds

12
@Nic - ถูกต้องนี่ไม่ได้แก้ไขต้นแบบ
John Doty

16
อาจเป็นการดีที่จะแนะนำ "git checkout master; git pull" เริ่มต้นเพื่อให้แน่ใจว่าสาขาหลักในเครื่องเป็นข้อมูลล่าสุด มักจะเห็นได้ชัด แต่ ...
MikeW

ในฐานะที่เป็นทางลัดเช็คเอาต์ / ผสานหลักคุณสามารถทำ "git pull origin master" เพื่อดึงเซิร์ฟเวอร์หลัก / รวมเป็นสาขาที่เช็คเอาต์ในเครื่องได้หรือไม่
user1172173

66

หากสาขาของคุณอยู่ในพื้นที่เท่านั้นและไม่ได้ถูกส่งไปยังเซิร์ฟเวอร์ให้ใช้

git rebase master

มิฉะนั้นให้ใช้

git merge master

18
เนื่องจากมีการปรับเปลี่ยนประวัติการกระทำและคุณไม่ต้องการพุชประวัติการค้นหาที่แก้ไขไปยังเซิร์ฟเวอร์
Chetan

1
หากคุณกำลังใช้ที่เก็บ svn เป็นที่เก็บระยะไกลของคุณ - ผ่านทางgit svnนั้นgit rebase masterคือทางที่จะไปเพื่อเก็บประวัติเชิงเส้นซึ่งเป็นสิ่งที่ svn เข้าใจ
alondono

15

คุณสามารถใช้เชอร์รี่เลือกเพื่อรับข้อผิดพลาดในการแก้ไขข้อผิดพลาด

$ git checkout branch
$ git cherry-pick bugfix

เชอร์รี่เลือกจะใช้งานได้ก็ต่อเมื่อ bugfix เป็นสาขาที่รวมกลับมาเป็นมาสเตอร์
Prasith Govin

1
คุณสามารถเลือกเชอร์รี่ได้ แต่หลังจากรวมสาขาเป็นหลักแล้ว (เมื่อสาขาพร้อม) คุณจะมีข้อผิดพลาดในการแก้ไขสองครั้งในประวัติ
Gauthier

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