ดังนั้นคุณได้ทำการเปลี่ยนแปลงในพื้นที่ของคุณกับที่เก็บในเครื่องของคุณ 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
?