หากว่าคุณกำลังเจอปัญหา Git pull code ไม่ได้เพราะเจอ Error Your local changes to the following files would be overwritten by merge อยู่ละก็ นั้นก็แสดงว่าคุณกำลงเจอปัญหา Git ตรวจสอบพบว่า code ในฝั่ง Remote และ Local ไม่ตรงกัน
Git error Your local changes เกิดขึ้นได้ยังไง
ตัวอย่าง: ปัญหานี้สามารถเกิดขึ้นได้ในกรณี เช่น นาย A และ นาย B ได้ทำการแก้ไขไฟล์ main.js พร้อมกัน จากนั้นนาย A ทำการ Push ไฟล์ main.js ขึ้นไปบน Remote พร้อมกับไฟล์งานอื่น ๆ
ในเวลาเดียวกันฝั่งของ นาย B ยังแก้ไขไฟล์ main.js ไม่เสร็จแต่ว่าจำเป็นต้องอัพเดทโค้ดจาก Remote มาที่ Local และเมื่อนาย B pull code เขาก็จะเจอกับ error แบบนี้ได้
กรณีที่ 1: Code ในฝั่ง Local เก่ากว่าฝั่ง Remote
รูปตัวอย่าง
จากรูปตัวอย่าง คุณสามารถแก้ปัญหา Your local changes ด้วยการใช้คำสั่ง git command line ได้ 3 วิธี ดังนี้
วิธีที่ 1. Checkout Code ในฝั่ง Local ที่เราต้องการจะ Pull Code
git pull origin <branch name> เช่น git pull origin magster
วิธีที่ 2. Checkout Branch วิธีนี้ใช้ในกรณี วิธีแรกไม่ได้ผล -f คือการ force (บังคับ) ให้ git ของเราชี้ไปยังตำแหน่งปัจจุบันของ Branch
วิธีที่ 3. แนะนำให้เป็นทางเลือกสุดท้าย เนื่องจาก git จะไม่สนใจทุกสิ่งที่เราแก้ไปใน Local Repo หากจะทำวิธีนี้แนะนำให้ทำการ Backup ไฟล์ที่ยังเก็บไว้นอก Folder ก็ จากนั้นค่อยทำการย้ายกลับมาใส่ Folder อีกครั้งหลังจาก reset เสร็จ
git pull origin <branch name> เช่น git pull origin magster
หากว่าคุณใช้งาน Sourcetree ให้คุณทำการคลิกขวาไฟล์ใน Unstaged file แล้วเลือก "Discard" จะได้ผลเหมือนกับ 3 วิธีด้านบนเช่นกัน
กรณีที่ 2: Code ในฝั่ง Local ใหม่กว่าฝั่ง Remote
คุณสามารถแก้ปัญหา Your local changes ด้วยการใช้คำสั่ง git command line ดังนี้
วิธีที่ 1 ใช้ในกรณีที่เรายังไม่ต้องการ commit file เข้าไปใน Git Stage ให้ใช้คำสั่ง Stash Code ใน Local repo ที่เราทำงานอยู่เพื่อที่จะ stash code ที่เราแกไขอยู่ปัจจุบันเก็บไว้ก่อน จากนั้น Pull code ลงมา และทำการ unstash code ที่เราเก็บไว้มาทับ Code ที่เรา pull ลงมา
2. git pull origin <branch name>
3. หลังจาก pull code เสร็จ
- git stash pop
- git stash apply
วิธีที่ 2 ใช้ในกรณีที่คุณสามารถ commit file เข้าไปใน Git stage กรณีที่เรามั่นใจว่า Code ปัจจุบันสามารถ add เข้า git ได้ใช้ใช้คำสั่ง git add ได้เลย
1. git add <filename> หรือ git add --all 2. git commit -m "commit description" 3. git pull origin <branch name>
หากว่าคุณใช้งาน Sourcetree ให้ทำตามวิธีนี้
1. คลิกปุ่ม Stash
จากนั้นใส่ Description ลงไป กด "OK"
2. คลิกปุ่ม Pull เพิ่ม pull code
3. จากนั้นเลือกราการ Stashes ไฟล์ที่เราสร้างไว้ คลิกขวาแล้วเลือก "Apply Stash" โค้ดที่เราทำการ Stash ไว้ก็จะกลับแล้ว
4. หากคุณต้องการลบ Stash ที่สร้างไว้ ก็สามารถคลิกขวาแล้วก็เลือก "Delete Stash" ได้เลย
บทความอื่น ๆ ที่เกี่ยวข้องกับเรื่อง GIT
- GIT Repositories คืออะไร มีกี่ประเภท ใช้งานยังไง
- คําสั่ง GIT พื้นฐาน คำสั่งที่ใช้บ่อย ตัวอย่างการใช้งานอย่างละเอียด
- SourceTree คืออะไร วิธีการใช้งาน ร่วมกับ GitHub
- สอนใช้ Sourcetree วิธีการใช้งาน ตั้งแต่ไม่เป็นจนโปร
- Git checkout คืออะไร ตัวอย่างการใช้งาน วิธีย้อน commit
- แก้ปัญหา git error: Your local changes to ... overwritten by merge:
- แก้ปัญหา git error: The following untracked ... overwritten by merge:
เป็นยังไงกันบ้างคะ ไม่ยากเลยใช่ไหมละกับการแก้ปัญหา git error: Your local changes to the following files would be overwritten by merge: ที่เรานำมาให้อ่านกัน ดูเพลินก็หวังว่าบทความของเราจะเป็นประโยชน์ต่อท่านไม่มากก็น้อย นอกจากนี้ เรายังมีบทความดี ๆ อีกมากมาย คุณสามารถลองคลิกเขาไปอ่านบทความอื่น ๆ ตามลิงค์ด้านล่างได้เลย