Git ผสานต้นแบบเข้ากับสาขาคุณลักษณะ


1016

สมมติว่าเรามีสถานการณ์ต่อไปนี้ใน Git:

  1. พื้นที่เก็บข้อมูลที่สร้างขึ้น:

    mkdir GitTest2
    cd GitTest2
    git init
    
  2. การดัดแปลงบางอย่างในต้นแบบเกิดขึ้นและได้รับการยอมรับ:

    echo "On Master" > file
    git commit -a -m "Initial commit"
    
  3. Feature1 แยกออกจากงานหลักและงานบางอย่างเสร็จแล้ว:

    git branch feature1
    git checkout feature1
    echo "Feature1" > featureFile
    git commit -a -m "Commit for feature1"
    
  4. ในขณะเดียวกันจะพบข้อบกพร่องในรหัสหลักและมีการสร้างสาขาโปรแกรมแก้ไขด่วน:

    git checkout master
    git branch hotfix1
    git checkout hotfix1
    
  5. ข้อผิดพลาดได้รับการแก้ไขในสาขาโปรแกรมแก้ไขด่วนและรวมกลับไปยังต้นแบบ (อาจหลังจากการตรวจสอบคำขอดึง / รหัส):

    echo "Bugfix" > bugfixFile
    git commit -a -m "Bugfix Commit"
    git checkout master
    git merge --no-ff hotfix1
    
  6. การพัฒนาบน feature1 ดำเนินต่อไป:

    git checkout feature1
    

ว่าฉันต้องการโปรแกรมแก้ไขด่วนในสาขาคุณลักษณะของฉันอาจเป็นเพราะข้อผิดพลาดเกิดขึ้นที่นั่น ฉันจะทำสิ่งนี้ให้สำเร็จโดยไม่ทำสิ่งที่ผูกไว้ในฟีเจอร์ของฉันได้อย่างไร?

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

ฉันไม่สามารถทำgit merge master --ff-only: "ร้ายแรง: เป็นไปไม่ได้ที่จะกรอไปข้างหน้าอย่างรวดเร็ว" แต่ฉันไม่แน่ใจว่าสิ่งนี้จะช่วยฉันได้หรือไม่


8
หากสาขาท้องถิ่นอย่างสมบูรณ์มีลักษณะที่feature1 git rebase
Jokester

19
ขอบคุณในฐานะผู้เริ่มต้นคอมไพล์git rebaseดูเหมือนว่าจะเป็นเวทย์มนตร์ดำสำหรับฉัน ....
theomega

13
ถ้า branch เป็นฟีเจอร์ - การแก้ไขบั๊กไม่ควรเกิดขึ้นที่นั่น (อย่างน้อยถ้าไม่ใช่ bug บั๊ก) เนื่องจากเป้าหมายของ Branch นี้คือการแสดงฟีเจอร์ใหม่ ข้อผิดพลาดจะได้รับการแก้ไขเมื่อรวมกับต้นแบบที่มีการกระทำที่มีการแก้ไข
gipi

21
น่าจะเป็นที่น่าสังเกตว่าสำหรับผู้เริ่มต้นที่ใน 3 git branch feature1และgit checkout feature1สามารถรวมกันเป็นgit checkout -b feature1และ 4 สามารถลดลงอย่างสิ้นเชิงเพื่อgit checkout -b hotfix1 master
นารูโตะ Sempai

3
คุณยินดีที่จะกลับมาและเปลี่ยนคำตอบที่ยอมรับเพราะคำตอบที่ยอมรับในปัจจุบันนั้นแย่มาก
Omnifarious

คำตอบ:


1217

เราจะรวมสาขาหลักเข้ากับสาขาคุณลักษณะได้อย่างไร ง่าย:

git checkout feature1
git merge master

ไม่มีจุดใดในการบังคับให้มีการผสานไปข้างหน้าอย่างรวดเร็วที่นี่เนื่องจากไม่สามารถทำได้ คุณมุ่งมั่นทั้งในสาขาฟีเจอร์และสาขาหลัก กรอไปข้างหน้าเป็นไปไม่ได้ตอนนี้

มีลักษณะที่GitFlow มันเป็นรูปแบบการแตกแขนงของคอมไพล์ที่สามารถติดตามได้และคุณก็ทำไปโดยไม่รู้ตัวแล้ว นอกจากนี้ยังเป็นส่วนขยายของ Git ซึ่งเพิ่มคำสั่งบางอย่างสำหรับขั้นตอนเวิร์กโฟลว์ใหม่ที่ทำสิ่งต่าง ๆ โดยอัตโนมัติซึ่งคุณจะต้องทำด้วยตนเอง

ดังนั้นคุณทำอะไรถูกต้องในเวิร์กโฟลว์ของคุณ คุณมีสองสาขาที่จะทำงานกับสาขาของคุณ feature1 นั้นเป็นสาขา "พัฒนา" ในรูปแบบ GitFlow

คุณสร้างสาขาโปรแกรมแก้ไขด่วนจากต้นแบบและผสานกลับ และตอนนี้คุณติดอยู่

โมเดล GitFlow ขอให้คุณรวมโปรแกรมแก้ไขด่วนเข้ากับสาขาการพัฒนาซึ่งก็คือ "feature1" ในกรณีของคุณ

ดังนั้นคำตอบที่แท้จริงคือ:

git checkout feature1
git merge --no-ff hotfix1

สิ่งนี้จะเพิ่มการเปลี่ยนแปลงทั้งหมดที่เกิดขึ้นภายในโปรแกรมแก้ไขด่วนให้กับสาขาคุณลักษณะ แต่เป็นการเปลี่ยนแปลงเหล่านั้นเท่านั้น พวกเขาอาจขัดแย้งกับการเปลี่ยนแปลงการพัฒนาอื่น ๆ ในสาขา แต่พวกเขาจะไม่ขัดแย้งกับสาขาหลักหากคุณผสานสาขาคุณลักษณะกลับไปเป็นหลักในที่สุด

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


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

42
นี่ควรเป็นคำตอบที่ยอมรับได้ มันทำงานได้ดีกับฟีเจอร์คำขอดึงของ GitHub ด้วย
Nostalg.io

125
ฉันคิดว่ามันเป็นที่น่าสังเกตว่าgit merge masterจะผสานจากท้องถิ่นสำเนาต้นแบบดังนั้นแม้ว่าคุณจะได้ทำgit pullในสาขาคุณลักษณะของคุณหลังจากที่คนอื่นรวมเป็นสาขาที่แตกต่างกันต้นแบบคุณจะต้องgit checkout masterแล้วgit pullจากนั้นgit checkout feature1อีกครั้งแล้วgit merge master.
damick

50
@damick Or just git fetchandgit merge origin/master
Yngvar Kristiansen

20
@damick @ yngvar-kristiansen git pull origin masterจะรวมorgin/masterกับสาขาปัจจุบันโดยอัตโนมัติ
L422Y

612

คุณควรจะรีบูทสาขาของคุณบนต้นแบบ:

git checkout feature1
git rebase master

จัดการความขัดแย้งทั้งหมดที่เกิดขึ้น เมื่อคุณได้รับข้อผูกมัดกับการแก้ไขข้อบกพร่อง (เป็นหลักแล้ว) Git จะบอกว่าไม่มีการเปลี่ยนแปลงและบางทีพวกเขาอาจถูกนำไปใช้แล้ว จากนั้นคุณดำเนินการรีบูตต่อ (ในขณะที่ข้ามคอมมิทที่มีอยู่แล้วในต้นแบบ) ด้วย

git rebase --skip

หากคุณดำเนินการgit logบนสาขาฟีเจอร์ของคุณคุณจะเห็นการแก้ไขข้อบกพร่องปรากฏเพียงครั้งเดียวและในส่วนหลัก

สำหรับการสนทนาที่มีรายละเอียดมากขึ้นให้ดูที่เอกสารคู่มือ Git ที่git rebase( https://git-scm.com/docs/git-rebase ) ซึ่งครอบคลุมกรณีการใช้งานที่แน่นอน

================ แก้ไขบริบทเพิ่มเติม ====================

คำตอบนี้จัดทำขึ้นเป็นพิเศษสำหรับคำถามที่ @theomega ถามโดยคำนึงถึงสถานการณ์เฉพาะของเขา หมายเหตุส่วนนี้:

ฉันต้องการป้องกัน [... ] มุ่งมั่นที่สาขาฟีเจอร์ของฉันซึ่งไม่เกี่ยวข้องกับการใช้งานคุณสมบัติ

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

ในการพูดถึงผู้ใช้ที่อ่านชื่อคำถามให้ข้ามเนื้อหาจริงและบริบทของคำถามจากนั้นอ่านคำตอบยอดนิยมอย่างสุ่มสี่สุ่มห้าโดยสมมติว่ามันจะใช้กับกรณีการใช้ (ต่าง ๆ ) ของพวกเขาอนุญาตให้ฉันทำอย่างละเอียด:

  • รีบูตสาขาส่วนตัวเท่านั้น (เช่นที่มีอยู่ในพื้นที่เก็บข้อมูลในเครื่องของคุณเท่านั้นและไม่ได้แชร์กับผู้อื่น) การแบ่งสาขาที่ใช้ร่วมกันจะ "ทำลาย" สำเนาที่คนอื่นอาจมี
  • ถ้าคุณต้องการที่จะรวมการเปลี่ยนแปลงจากสาขา (ไม่ว่าจะเป็นหลักหรือสาขาอื่น) เป็นสาขาที่เป็นสาธารณะ (เช่นคุณได้ผลักสาขาเพื่อเปิดคำขอดึง แต่ตอนนี้มีความขัดแย้งกับต้นแบบและคุณจำเป็นต้องปรับปรุง สาขาของคุณเพื่อแก้ไขข้อขัดแย้งเหล่านั้น) คุณจะต้องรวมพวกเขาใน (เช่นกับgit merge masterคำตอบของ @ Sven)
  • นอกจากนี้คุณยังสามารถรวมสาขาในสาขาส่วนตัวในท้องถิ่นของคุณหากคุณชอบ แต่พึงระวังว่ามันจะส่งผลให้ "ต่างชาติ" มุ่งมั่นในสาขาของคุณ

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


136
ไม่มันไม่ปลอดภัย: ถ้าคุณทำการรีบูทคุณจะเปลี่ยนประวัติของสาขาซึ่งจะส่งผลต่อนักพัฒนาที่ดึงสาขา ในการกระทำ, คอมไพล์จะไม่ยอมให้คุณผลักสาขาที่ถูกปฏิเสธโดยปริยาย: คุณต้องบังคับการอัพเดทด้วย-fเมื่อกดเพื่อเขียนทับสาขาด้วยเวอร์ชั่นที่ถูก rebased ระวัง!
David Sulc

17
ทีมงานมืออาชีพที่ใช้คอมไพล์จัดการกับปัญหานี้ได้อย่างไร สนใจเพียงแค่คิดอย่างรอบคอบแล้วทำ-fหรือไม่ หรือขั้นตอนการทำงานที่สมบูรณ์ของฉันมีข้อบกพร่องเพราะฉันต้องการ-fหรือไม่
theomega

30
ฉันจะเอากฎ "ศักดิ์สิทธิ์" ไปเลยคือคุณไม่ต้องรีบูท (หรือเปลี่ยนแปลงประวัติการกระทำ) ในรหัสที่แชร์ไปแล้ว: มันเป็นแค่รหัสท้องถิ่นของคุณเท่านั้น โดยทั่วไปคุณควรรีบูตการเปลี่ยนแปลงเพื่อ "ล้างข้อมูล" ก่อนที่จะแบ่งปัน ในกรณีของคุณคุณสามารถผลักสาขาที่ถูกปฏิเสธใหม่ (ด้วยชื่ออื่น) และขอให้เพื่อนร่วมงานตั้งฐานการเปลี่ยนแปลงของสาขานั้น (เช่นโดยการรีสาขาสาขาท้องถิ่นของพวกเขาปิดสาขาใหม่ดังกล่าวข้างต้น) จากนั้นลบออกfeature1จาก Github
David Sulc

19
ทีมงานมืออาชีพส่วนใหญ่ที่ฉันเคยใช้ไม่เคยใช้ rebase - พวกเขารวมทุกอย่างเป็นค่าเริ่มต้นเพื่อให้ไม่มีการแก้ไขประวัติเกิดขึ้น นี่เป็นวิธีการทำงานที่ฉันชอบ ในทางกลับกันบางทีมใช้ rebase เพื่อกระทำการ 'ทำความสะอาด' ก่อนที่จะผลักดันพวกเขา (แต่ไม่เคยกดเลย)
Jonathan Hartley

11
ใช่คุณไม่ควรลบสาขาสาธารณะ อย่างไรก็ตามคำถามของ OP ดูเหมือนจะจัดการกับการรวมคอมมิทใหม่เข้าด้วยกันmasterสาขาเอกชน (เขากล่าวถึง "สาขาท้องถิ่น" ของเขา) ในกรณีดังกล่าวrebaseเป็นเรื่องปกติและเป็นกรณีการใช้งานเดียวกับ "การล้างข้อมูล" ที่คุณพูดถึง
David Sulc

69

จากบทความนี้คุณควร:

  • สร้างสาขาใหม่ซึ่งยึดตามเวอร์ชันหลักของเวอร์ชันใหม่

    git branch -b newmaster

  • รวมสาขาฟีเจอร์เก่าของคุณเข้าเป็นสาขาใหม่

    git checkout newmaster

  • แก้ไขข้อขัดแย้งในฟีเจอร์ใหม่ของสาขา

สองคำสั่งแรกสามารถรวมกันgit checkout -b newmasterได้

วิธีนี้จะทำให้ประวัติของคุณชัดเจนเนื่องจากคุณไม่ต้องการผสานกลับ และคุณไม่จำเป็นต้องระมัดระวังอย่างยิ่งเพราะคุณไม่จำเป็นต้องทำการรีบูต Git


7
จะดีถ้าคุณทำให้คำสั่ง git ที่เกี่ยวข้องติดตามแต่ละจุด ไม่อย่างนั้นฉันคิดว่านี่เป็นตัวเลือกที่ปลอดภัยและสะอาดกว่า
VirgileD

@zimi แล้วถ้าเรามีสาขาระยะไกลล่ะ เราจะสร้างสาขาคุณลักษณะการอัปเดตใหม่อีกครั้งหรือไม่ หรือเราสามารถตั้งค่ารีโมตอัปสตรีมได้หรือไม่
BILL

@VirgileD ฉันเพิ่งโพสต์คำตอบของตัวเองพร้อมรายละเอียดเพิ่มเติมรวมถึงคำสั่ง git ที่เกี่ยวข้อง
jkdev

29

git merge

คุณสามารถทำตามขั้นตอนด้านล่าง

1. รวมorigin/masterสาขาเข้ากับfeatureสาขา

# step1: change branch to master, and pull to update all commits
$ git checkout master
$ git pull

# step2: change branch to target, and pull to update commits
$ git checkout feature
$ git pull

# step3: merge master to feature(⚠️ current is feature branch)
$ git merge master

2. รวมfeatureสาขากับorigin/masterสาขา

origin/masterเป็นสาขาต้นแบบระยะไกลในขณะที่masterเป็นสาขาต้นแบบท้องถิ่น

$ git checkout master
$ git pull origin/master

$ git merge feature
$ git push origin/master




รู้สึกเหมือนการปฏิเสธเป็น hyped! เวียนเก่าดี :)!
Foreever

27

คำตอบของ Zimiอธิบายกระบวนการนี้โดยทั่วไป นี่คือรายละเอียดเฉพาะ:

  1. สร้างและเปลี่ยนเป็นสาขาใหม่ ตรวจสอบให้แน่ใจว่าสาขาใหม่เป็นไปตามที่masterจะรวมโปรแกรมแก้ไขด่วนล่าสุด

    git checkout master
    git branch feature1_new
    git checkout feature1_new
    
    # Or, combined into one command:
    git checkout -b feature1_new master
    
  2. หลังจากเปลี่ยนเป็นสาขาใหม่ให้ผสานการเปลี่ยนแปลงจากฟีเจอร์สาขาที่คุณมีอยู่ สิ่งนี้จะเพิ่มการผูกมัดของคุณโดยไม่ทำซ้ำการแก้ไขด่วน

    git merge feature1
    
  3. ในสาขาใหม่ให้แก้ไขข้อขัดแย้งระหว่างคุณลักษณะของคุณกับสาขาหลัก

ทำ! ตอนนี้ใช้สาขาใหม่เพื่อพัฒนาคุณลักษณะของคุณต่อไป


2
ปัญหาของเรื่องนี้คือผู้พัฒนาต้องเสียเวลาวางไข่สาขาใหม่อย่างต่อเนื่องเมื่อพวกเขาจำเป็นต้องอัปเดตกับต้นแบบ เราจะทำหลายสาขามากอาจ 3 ครั้งต่อวันในระหว่างการทำงาน คุณควรเขียนคำแนะนำเกี่ยวกับการทำความสะอาดกิ่งสาขาถังขยะในท้องถิ่นทั้งหมดและวิธีการกำจัดพวกเขาในระยะไกลด้วย เราต้องการคำแนะนำในการตั้งชื่อสาขาเหล่านี้ทั้งหมดดังนั้นเราจึงไม่สับสน หากไม่มีบิตนี้จะทำให้ระบบสาขากลายเป็นความสับสนวุ่นวาย
pauljohn32

4
คุณพูดถูกสิ่งนี้ไม่ควรทำตลอดเวลา เฉพาะเมื่อ (1) การเปลี่ยนแปลงต้นแบบจำเป็นสำหรับฟีเจอร์ของคุณหรือ (2) คุณกำลังจะรวมสาขากับมาสเตอร์และอาจมีข้อขัดแย้ง และเพื่อหลีกเลี่ยงความยุ่งเหยิงคุณสามารถลบสาขาหลังจากรวมแล้ว
jkdev

11

นี่คือสคริปต์ที่คุณสามารถใช้เพื่อรวมสาขาหลักของคุณเข้ากับสาขาปัจจุบันของคุณ

สคริปต์ทำสิ่งต่อไปนี้:

  • สลับไปที่สาขาหลัก
  • ดึงสาขาหลัก
  • สลับกลับไปที่สาขาปัจจุบันของคุณ
  • ผสานสาขาหลักเข้ากับสาขาปัจจุบันของคุณ

บันทึกรหัสนี้เป็นไฟล์แบตช์ (.bat) และวางสคริปต์ไว้ที่ใดก็ได้ในที่เก็บของคุณ จากนั้นคลิกที่มันเพื่อเรียกใช้และคุณถูกตั้งค่า

:: This batch file pulls current master and merges into current branch

@echo off

:: Option to use the batch file outside the repo and pass the repo path as an arg
set repoPath=%1
cd %repoPath%

FOR /F "tokens=*" %%g IN ('git rev-parse --abbrev-ref HEAD') do (SET currentBranch=%%g)

echo current branch is %currentBranch%
echo switching to master
git checkout master
echo.
echo pulling origin master
git pull origin master
echo.
echo switching back to %currentBranch%
git checkout %currentBranch%
echo.
echo attemting merge master into %currentBranch%
git merge master
echo.
echo script finished successfully
PAUSE

10

คุณอาจสามารถเลือก "cherry-pick" เพื่อดึงการมอบหมายที่แน่นอนที่คุณต้องการในสาขาฟีเจอร์ของคุณ

ทำ a git checkout hotfix1เพื่อไปที่สาขา hotfix1 จากนั้นให้ทำgit logเพื่อรับแฮช SHA-1 (ลำดับตัวอักษรและตัวเลขสุ่มขนาดใหญ่ที่ระบุการกระทำ) ของการกระทำที่เป็นปัญหา คัดลอกนั้น (หรืออักขระ 10 ตัวแรกหรือมากกว่านั้น)

จากนั้นgit checkout feature1เพื่อกลับไปยังสาขาฟีเจอร์ของคุณ

จากนั้น git cherry-pick <the SHA-1 hash that you just copied>

ที่จะดึงความมุ่งมั่นนั้นและเฉพาะที่กระทำลงในสาขาของคุณ การเปลี่ยนแปลงนั้นจะอยู่ในสาขา - คุณเพียงแค่ "หยิบเชอร์รี่" เข้ามาจากนั้นกลับมาทำงานแก้ไขส่งมอบผลักดัน ฯลฯ เข้ากับเนื้อหาหัวใจของคุณ

ในที่สุดเมื่อคุณทำการผสานอื่นจากสาขาหนึ่งไปยังสาขาฟีเจอร์ของคุณ (หรือในทางกลับกัน) Git จะรับรู้ว่าคุณได้รวมเข้ากับคอมมิทเฉพาะนั้นแล้วรู้ว่าไม่ต้องทำอีกแล้ว "ข้ามไป" มัน


ฉันไม่คิดว่านี่เป็นความคิดที่ดี จากนั้น IMO การมอบหมายโปรแกรมแก้ไขด่วนจะแสดงในประวัติของสาขาฟีเจอร์ของคุณซึ่งโดยทั่วไปคุณไม่ต้องการ
Martin Pecka

1
“ ในที่สุดเมื่อคุณทำการผสานอื่นจากสาขาหนึ่งไปยังสาขาฟีเจอร์ของคุณ (หรือในทางกลับกัน) คอมไพล์จะรับรู้ว่าคุณได้รวม [... ] "- มันเป็นวิธีการใช้งานจริง? ฉันไม่คิดว่าจะใช้git mergeงานได้ใน "การเล่นซ้ำกระทำ" - ที่คุณดูเหมือนจะบอกใบ้ ("และเพียงข้ามมัน") การผสมกันระหว่างการเก็บเชอร์รี่กับเชอร์รี่อาจทำให้เกิดปัญหาได้ ดู: news.ycombinator.com/item?id=3947950
Guildenstern

0

ฉันอยู่ในฟีเจอร์สาขาและทำการรีแฟคเตอร์ ฉันต้องการรวมการเปลี่ยนแปลงหลักตอนนี้เข้ากับสาขาคุณลักษณะของฉัน ฉันอยู่ไกลมาก หมายเหตุฉันไม่ต้องการดึงการเปลี่ยนแปลงหลักไปยังเครื่องของฉันเพราะสาขาคุณลักษณะของฉันมีการย้ายโมดูลจากที่หนึ่งไปอีกที่หนึ่ง ฉันพบว่าการทำงานด้านล่างโดยไม่ต้องดึงไม่ทำงาน มันบอกว่า "ทันสมัยแล้ว"

 //below does not get the latest from remote master to my local feature branch without git pull
    git checkout master 
    git fetch 
    git checkout my-feature-branch 
    git merge master

ด้านล่างใช้งานได้โปรดทราบให้ใช้ git merge origin / master:

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