วิธีการย้อนกลับเพื่อยกเลิกการเปลี่ยนแปลงทั้งหมด:
ฉันพบคำถามนี้หลังจากทำการผสานและลืมที่จะชำระเงินให้พัฒนาทันทีในภายหลัง คุณ guessed มัน: ผมเริ่มปรับเปลี่ยนไม่กี่ไฟล์โดยตรงบนต้นแบบ D'Oh! ในขณะที่สถานการณ์ของฉันแทบจะไม่ซ้ำกันเลย (เราเคยทำมาหมดแล้วใช่ไหม ->) ฉันจะเสนอวิธีย้อนกลับที่ฉันเคยใช้เพื่อละทิ้งการเปลี่ยนแปลงทั้งหมดเพื่อให้ต้นแบบดูเหมือนพัฒนาอีกครั้ง
หลังจากทำgit diff
เพื่อดูว่าไฟล์ใดถูกแก้ไขและประเมินขอบเขตข้อผิดพลาดของฉันฉันดำเนินการ:
git stash
git stash clear
หลังจากเก็บการเปลี่ยนแปลงทั้งหมดครั้งแรกแล้วการเปลี่ยนแปลงทั้งหมดจะถูกล้างต่อไป การเปลี่ยนแปลงทั้งหมดที่เกิดขึ้นกับไฟล์ที่ผิดพลาดเป็นมาสเตอร์หายไปและพาริตีคืนมา
สมมติว่าตอนนี้ฉันต้องการกู้คืนการเปลี่ยนแปลงเหล่านั้น ฉันสามารถทำได้ ขั้นตอนแรกคือการค้นหาแฮชของที่ซ่อนที่ฉันเพิ่งล้าง / ลดลง:
git fsck --no-reflog | awk '/dangling commit/ {print $3}'
หลังจากเรียนรู้แฮชฉันกู้คืนการเปลี่ยนแปลงที่ไม่ได้ผูกมัดสำเร็จด้วย:
git stash apply hash-of-cleared-stash
ฉันไม่ต้องการกู้คืนการเปลี่ยนแปลงเหล่านั้นจริงๆเพียงแค่ต้องการตรวจสอบว่าฉันสามารถนำกลับมาได้ดังนั้นฉันจึงล้างอีกครั้ง
อีกทางเลือกหนึ่งคือใช้ที่ซ่อนกับสาขาอื่นแทนที่จะล้างการเปลี่ยนแปลง ดังนั้นในแง่ของการล้างการเปลี่ยนแปลงที่เกิดจากการทำงานในสาขาที่ไม่ถูกต้องstash
คุณจะได้รับความยืดหยุ่นอย่างมากในการกู้คืนจาก boo-boo ของคุณ
Anyhoo หากคุณต้องการวิธีการล้างการเปลี่ยนแปลงสาขาที่ย้อนกลับได้วิธีที่กล่าวมาข้างต้นเป็นวิธีที่อันตรายน้อยกว่าในกรณีการใช้งานนี้
git reset --hard HEAD^