ดังนั้นคุณได้ทำการเปลี่ยนแปลงในพื้นที่ของคุณกับที่เก็บในเครื่องของคุณ git fetchจากนั้นเพื่อให้ได้รับการเปลี่ยนแปลงจากระยะไกลเพื่อเก็บข้อมูลในพื้นที่ของคุณโดยไม่มีการเปลี่ยนแปลงไปยังไฟล์ในท้องถิ่นของคุณคุณสามารถใช้ จริงๆแล้วgit pullเป็นการดำเนินการสองขั้นตอน: การไม่ทำลายgit fetchตามด้วยไฟล์git merge. ดูอะไรคือความแตกต่างระหว่าง 'git pull' และ 'git fetch' สำหรับการสนทนาเพิ่มเติม
ตัวอย่างโดยละเอียด:
สมมติว่าที่เก็บของคุณเป็นแบบนี้ (คุณได้ทำการเปลี่ยนแปลงtest2:
* ed0bcb2 - (HEAD, master) test2
* 4942854 - (origin/master, origin/HEAD) first
และที่originเก็บเป็นเช่นนี้ (มีคนอื่นให้คำมั่นtest1):
* 5437ca5 - (HEAD, master) test1
* 4942854 - first
ในตอนนี้คอมไพล์จะบ่นและขอให้คุณดึงก่อนหากคุณพยายามดันtest2ไปยังที่เก็บระยะไกล หากคุณต้องการดูว่า test1 คืออะไรโดยไม่ต้องแก้ไขที่เก็บในเครื่องของคุณให้รันสิ่งนี้:
$ git fetch
ที่เก็บในเครื่องผลลัพธ์ของคุณจะเป็นดังนี้:
* ed0bcb2 - (HEAD, master) test2
| * 5437ca5 - (origin/master, origin/HEAD) test1
|/
* 4942854 - first
ตอนนี้คุณมีการเปลี่ยนแปลงระยะไกลในสาขาอื่นและคุณเก็บไฟล์ในเครื่องของคุณไว้เหมือนเดิม
แล้วอะไรต่อไป? คุณสามารถทำ a git mergeซึ่งจะเป็นเอฟเฟกต์เดียวกับgit pull(เมื่อรวมกับก่อนหน้าgit fetch) หรือตามที่ฉันต้องการคือทำgit rebase origin/masterเพื่อใช้การเปลี่ยนแปลงของคุณด้านบนorigin/masterซึ่งจะช่วยให้คุณมีประวัติที่สะอาดยิ่งขึ้น
git commitการเปลี่ยนแปลงในท้องถิ่นที่เกิดขึ้นgit pull?