Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

Undo Git Pull: คู่มือยกเลิกการ Pull ใน Git

คำสั่ง git pull ใช้ดึงการเปลี่ยนแปลงของโปรเจกต์จาก Remote Repository มาที่เครื่อง Local การดำเนินการนี้สามารถยกเลิกได้โดยใช้คำสั่ง git reset ซึ่งจะ revert Repository กลับไปยังจุดก่อนหน้าในประวัติ

คู่มือนี้อธิบายวิธีใช้ git reset เพื่อ Undo Git Pull Operation พร้อมตัวอย่างเพื่อช่วยให้คุณเรียนรู้การใช้คำสั่งนี้

Git Pull: การวิเคราะห์

คำสั่ง git pull ทำให้ Local Repository ของคุณทันสมัยกับ Remote Counterpart

เมื่อรัน git pull Git จะตรวจสอบว่ามีการเปลี่ยนแปลงที่ Remote Repository หรือไม่ โดยรัน git fetch ก่อน หากมีการเปลี่ยนแปลง fetch จะดึง metadata ของการเปลี่ยนแปลงเหล่านั้นมา

ต่อมา git pull จะรัน git merge เพื่อ merge การเปลี่ยนแปลงที่ fetch พบ มาที่เครื่อง Local หมายความว่าเมื่อรัน git pull Local Version ของ Repository จะถูกเปลี่ยนให้ตรงกับ Remote Repository

Undo Git Pull

ไม่มีคำสั่งโดยตรงสำหรับ Undo Git Pull ทางเลือกคือใช้ git reset ซึ่งจะ revert Repository กลับไปยัง Commit ก่อนหน้า

เรากำลังทำงานโปรเจกต์ ck-git เพื่อนร่วมทีมเพิ่ง push commit ไปที่ Remote Version บน GitHub เราต้องการดึงการเปลี่ยนแปลงเหล่านี้

เพื่อดึงการเปลี่ยนแปลง เราใช้ git pull:

git pull

คำสั่งคืนข้อความว่าได้ pull metadata และดาวน์โหลดการเปลี่ยนแปลงจาก Remote มาที่ Local แล้ว:

remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), done. From https://github.com/career-karma-tutorials/ck-git 77e7fc0..a8336fa master -> origin/master Updating 77e7fc0..a8336fa Fast-forward README.md | 1 + 1 file changed, 1 insertion(+)

ไฟล์เดียวที่เปลี่ยนบน Branch master คือ README.md มีบรรทัดเพิ่ม 1 บรรทัดที่ไม่มีใน Commit ก่อนหน้า

ตอนนี้ สมมติเราต้องการ Undo การดำเนินการนี้ เรายังไม่พร้อมยอมรับการเปลี่ยนแปลงนี้เข้า Local Repository เพื่อ Undo เราต้องรัน git reset

ก่อนรัน git reset คุณควรทราบว่าคำสั่งนี้จะลบ Uncommitted Changes ที่คุณทำไปที่ Repository ทำให้แน่ใจว่าได้ Commit การเปลี่ยนแปลงที่ต้องการเก็บไว้ก่อนรัน reset

ลองรัน git reset เพื่อกลับสู่สถานะ Repository ก่อนหน้าที่ Commit ล่าสุดใน Git:

git reset 77e7fc0 --hard

คำสั่งนี้ revert Repository ไปสู่สถานะที่ Commit ล่าสุด:

Unstaged changes after reset: M README.md

Flag --hard บอก Git ว่าเราต้องการเปลี่ยน Working Directory ให้ตรงกับเนื้อหาโค้ดที่ Commit นั้นๆ

ทางเลือกอื่น ใช้ HEAD statement เพื่อระบุ Commit ที่ต้องการ revert:

git reset HEAD~1 --hard

คำสั่งนี้ย้าย Repository กลับ 1 Commit เราสามารถเปลี่ยนตัวเลข 1 เพื่อย้อนกลับไป Commit ก่อนหน้าอีกได้

ไฟล์ README.md ตอนนี้อยู่ในสถานะเหมือนตอน Commit ล่าสุด หากคุณทำการเปลี่ยนแปลงไฟล์ก่อนรัน git pull แต่ไม่ได้ commit การเปลี่ยนแปลงเหล่านั้นจะเข้าถึงไม่ได้ เนื่องจาก Git บันทึกเฉพาะการเปลี่ยนแปลงที่ Commit แล้วเท่านั้น

สรุป

คุณสามารถใช้ git reset เพื่อ Undo Git Pull Operation คำสั่ง git reset จะ reset Repository ไปยังจุดเฉพาะในประวัติ หากคุณทำการเปลี่ยนแปลงไฟล์ก่อนรัน git pull แต่ไม่ได้ commit การเปลี่ยนแปลงเหล่านั้นจะหายไป

ก่อนรัน git reset ให้แน่ใจว่า Commit การเปลี่ยนแปลงทั้งหมดแล้ว git reset จะทำให้คุณสูญเสีย Uncommitted Changes

ตอนนี้คุณมีความรู้เพียงพอที่จะ Undo Git Pull Command ได้แล้ว!