คำตอบสั้น ๆ :
git reset 'HEAD@{1}'
คำตอบยาว:
Git เก็บบันทึกการอัปเดตการอ้างอิงทั้งหมด (เช่นเช็คเอาต์รีเซ็ตกระทำส่งผสาน) คุณสามารถดูได้โดยพิมพ์:
git reflog
ที่ไหนสักแห่งในรายการนี้คือความมุ่งมั่นที่คุณสูญเสีย สมมติว่าคุณเพิ่งพิมพ์git reset HEAD~
และต้องการยกเลิก reflog ของฉันดูเหมือนว่านี้:
$ git reflog
3f6db14 HEAD@{0}: HEAD~: updating HEAD
d27924e HEAD@{1}: checkout: moving from d27924e0fe16776f0d0f1ee2933a0334a4787b4c
[...]
บรรทัดแรกบอกว่าHEAD
0 ตำแหน่งที่ผ่านมา (ในคำอื่น ๆ ตำแหน่งปัจจุบัน) คือ 3f6db14; HEAD~
มันได้โดยการตั้งค่าไป บรรทัดที่สองบอกว่าHEAD
1 ตำแหน่งที่ผ่านมา (ในคำอื่น ๆ สถานะก่อนการรีเซ็ต) คือ d27924e มันได้มาจากการตรวจสอบการกระทำเฉพาะ (แม้ว่ามันจะไม่สำคัญในตอนนี้) ดังนั้นหากต้องการยกเลิกการรีเซ็ตให้เรียกใช้git reset HEAD@{1}
(หรือgit reset d27924e
)
ถ้าในมืออื่น ๆ ที่คุณได้เรียกใช้คำสั่งอื่น ๆ reflog
ตั้งแต่นั้นมาว่าหัวปรับปรุงกระทำที่คุณต้องการจะไม่เป็นที่ด้านบนของรายการและคุณจะต้องค้นหาผ่าน
หมายเหตุสุดท้ายสุดท้าย: การดูที่reflog
สาขาเฉพาะที่คุณต้องการยกเลิกการรีเซ็ตให้พูดเจ้านายเป็นเรื่องง่ายกว่าHEAD
:
$ git reflog show master
c24138b master@{0}: merge origin/master: Fast-forward
90a2bf9 master@{1}: merge origin/master: Fast-forward
[...]
HEAD reflog
นี้ควรมีน้อยเสียงในกว่าทั่วไป