ฉัน Noob ใน Git และพยายามที่จะเรียนรู้แตกต่างระหว่างVSgit pull git rebaseมีใครช่วยยกตัวอย่างได้ไหมว่าเมื่อใดควรใช้ตัวเลือกใดเนื่องจากฉันรู้สึกว่าทั้งสองมีจุดประสงค์เดียวกัน
ฉัน Noob ใน Git และพยายามที่จะเรียนรู้แตกต่างระหว่างVSgit pull git rebaseมีใครช่วยยกตัวอย่างได้ไหมว่าเมื่อใดควรใช้ตัวเลือกใดเนื่องจากฉันรู้สึกว่าทั้งสองมีจุดประสงค์เดียวกัน
คำตอบ:
git pullและgit rebaseไม่สามารถใช้แทนกันได้ แต่มีความเชื่อมโยงอย่างใกล้ชิด
git pullดึงการเปลี่ยนแปลงล่าสุดของสาขาปัจจุบันจากรีโมตและใช้การเปลี่ยนแปลงเหล่านั้นกับสำเนาของสาขาในเครื่องของคุณ โดยทั่วไปจะทำได้โดยการรวมกล่าวคือการเปลี่ยนแปลงภายในจะถูกรวมเข้ากับการเปลี่ยนแปลงระยะไกล จึงgit pullคล้ายกับgit fetch & git merge.
Rebasing เป็นอีกทางเลือกหนึ่งในการรวมเข้าด้วยกัน แทนที่จะสร้างคอมมิตใหม่ที่รวมทั้งสองสาขาเข้าด้วยกันมันจะย้ายคอมมิตของกิ่งหนึ่งไปไว้ด้านบนของอีกสาขา
คุณสามารถดึงโดยใช้ rebase แทนการผสาน ( git pull --rebase) การเปลี่ยนแปลงในเครื่องที่คุณทำจะถูกนำกลับมาใช้ใหม่กับการเปลี่ยนแปลงระยะไกลแทนที่จะรวมเข้ากับการเปลี่ยนแปลงระยะไกล
Atlassian มีเอกสารที่ยอดเยี่ยมเกี่ยวกับการรวมกับการปรับใหม่
git-pull - ดึงข้อมูลจากและรวมเข้ากับที่เก็บอื่นหรือGIT PULLสาขาในพื้นที่
โดยทั่วไปคุณกำลังดึงสาขาระยะไกลไปยังพื้นที่ของคุณตัวอย่าง:
git pull origin master
จะดึงสาขาหลักไปยังที่เก็บในเครื่องของคุณ
git-rebase - ฟอร์เวิร์ด - พอร์ตโลคัลคอมมิตกับ GIT REBASEหัวอัปสตรีมที่อัปเดต
สิ่งนี้กำลังทำให้การเปลี่ยนแปลงในเครื่องของคุณอยู่เหนือการเปลี่ยนแปลงที่ทำจากระยะไกลโดยผู้ใช้รายอื่น ตัวอย่างเช่น:
SOME-FEATUREตอนนี้คุณต้องการเห็นการเปลี่ยนแปลงของเขาและของคุณในสาขาในพื้นที่ของคุณ จากนั้นคุณชำระเงินmasterสาขา:
git checkout master
จากนั้นคุณสามารถดึง:
git pull origin master
จากนั้นคุณไปที่สาขาของคุณ:
git checkout SOME-FEATURE
และคุณสามารถทำ rebase masterเพื่อรับการเปลี่ยนแปลงล่าสุดจากนั้นและวางสาขาของคุณไว้ด้านบน:
git rebase master
ฉันหวังว่าตอนนี้จะชัดเจนมากขึ้นสำหรับคุณ
git fetch git rebase origin/master
โดยสังเขป :
-> Git Merge: มันจะรวมการเปลี่ยนแปลงของคุณและจากระยะไกลเข้าด้วยกันและจะสร้างบันทึกประวัติการกระทำอื่น
-> Git Rebase: มันจะทำให้การเปลี่ยนแปลงของคุณอยู่เหนือการเปลี่ยนแปลงระยะไกลใหม่ทั้งหมดและเขียนประวัติการคอมมิตใหม่ดังนั้นประวัติการคอมมิตของคุณจะสะอาดกว่าการรวมคอมไพล์ Rebase คือปฏิบัติการทำลายล้าง นั่นหมายความว่าหากคุณใช้ไม่ถูกต้องคุณอาจสูญเสียงานที่มุ่งมั่นและ / หรือทำลายความสอดคล้องของที่เก็บข้อมูลของนักพัฒนาคนอื่น ๆ