แก้ปัญหา git pull code ไม่ได้จาก error: your local changes

หากว่าคุณกำลังเจอปัญหา 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 checkout <filename> เช่น git checkout readme.html
git pull origin <branch name> เช่น git pull origin magster

วิธีที่ 2. Checkout Branch วิธีนี้ใช้ในกรณี วิธีแรกไม่ได้ผล -f คือการ force (บังคับ) ให้ git ของเราชี้ไปยังตำแหน่งปัจจุบันของ Branch

git checkout origin/<branch name> -f เช่น git checkout origin/master -f

วิธีที่ 3. แนะนำให้เป็นทางเลือกสุดท้าย เนื่องจาก git จะไม่สนใจทุกสิ่งที่เราแก้ไปใน Local Repo หากจะทำวิธีนี้แนะนำให้ทำการ Backup ไฟล์ที่ยังเก็บไว้นอก Folder ก็ จากนั้นค่อยทำการย้ายกลับมาใส่ Folder อีกครั้งหลังจาก reset เสร็จ

git reset -- hard
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 ลงมา

1. git stash
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 error: Your local changes to the following files would be overwritten by merge: ที่เรานำมาให้อ่านกัน ดูเพลินก็หวังว่าบทความของเราจะเป็นประโยชน์ต่อท่านไม่มากก็น้อย นอกจากนี้ เรายังมีบทความดี ๆ อีกมากมาย คุณสามารถลองคลิกเขาไปอ่านบทความอื่น ๆ ตามลิงค์ด้านล่างได้เลย

เทคนิคอื่นๆ เกี่ยวกับการเขียนโค้ด คลิก

อย่าลืมไปติดตาม Facebook fanpage ของเรา >> Click <<

หมวดหมู่เกี่ยวกับ Coding

เนื้อหาที่คล้ายกัน...

แก้ปัญหา git pull code ไม่ได้ error: the following untracked

แก้ปัญหา git pull code ไม่ได้ error: the following untracked

ดูเพลิน Admin - 23 ธ.ค. 65
SourceTree คืออะไร วิธีการใช้งาน ร่วมกับ GitHub

SourceTree คืออะไร วิธีการใช้งาน ร่วมกับ GitHub

ดูเพลิน Admin - 22 ธ.ค. 65
GIT Repositories คืออะไร ทำงานแบบไหน ใช้งานยังไง

GIT Repositories คืออะไร ทำงานแบบไหน ใช้งานยังไง

ดูเพลิน Admin - 22 ธ.ค. 65
Git checkout คืออะไร ตัวอย่างการใช้งาน วิธีย้อน commit

Git checkout คืออะไร ตัวอย่างการใช้งาน วิธีย้อน commit

ดูเพลิน Admin - 23 ธ.ค. 65
สอนใช้ Sourcetree วิธีการใช้งาน ตั้งแต่ไม่เป็นจนโปร

สอนใช้ Sourcetree วิธีการใช้งาน ตั้งแต่ไม่เป็นจนโปร

ดูเพลิน Admin - 23 ธ.ค. 65

เรื่องราวเอื่น ๆ ในหมวดเทคนิคการเขียนโค้ด...

let value = 147/32; let result_value = Math.round(value); console.info('Value = '+value+' Result = '+result_value); //ผลลัพธ์ Value = 4.59 Result = 5let value = 147/33; let result_value = Math.round(value); console.info('Value = '+value+' Result = '+result_value); //ผลลัพธ์ Value = 4.454 Result = 4