ฉันจะแก้ปัญหานี้ได้อย่างไร? ใช้git fsck
และบันทึก!
ขั้นแรกให้สร้างไฟล์ที่มีคอมมิตและ blobs ที่สูญหาย (ไม่สามารถเข้าถึงได้) (หมายเหตุ: หากคุณทำบางสิ่งบางอย่างเช่นgit gc
นั้นขยะจะรวบรวมสิ่งที่พวกเขากระทำทั้งหมดและคุณจะไม่พบที่นี่!)
$git fsck --lost-found > lost_found.commits
ที่ให้ไฟล์แบบนี้:
ห้อยกระทำ dec2c5e72a81ef06963397a49c4b068540fc0dc3
ห้อยหยด f8c2579e6cbfe022f08345fa7553feb08d60a975
ห้อยหยด 0eb3e86dc112332ceadf9bc826c49bd371acc194
ห้อยหยด 11cbd8eba79e01f4fd7f496b1750953146a09502
ห้อยกระทำ 18733e44097d2c7a800650cea442febc5344f9b3
ห้อยหยด 1e53a5cdb3ecdde27081ec6e8b31e4070106ee05
จากนั้นคุณสามารถเปิดไฟล์นี้ด้วยโปรแกรมแก้ไขข้อความที่คุณชื่นชอบเพื่อคัดลอกแฮชคอมมิต / บล็อกจากที่นั่น (* ไอ * มาโครเป็นกลุ่มใช้งานได้ดีสำหรับไอ * นี้)
git log --oneline <commit hash>
ตอนนี้คุณสามารถเข้าสู่ระบบกลับมาจากการกระทำนี้กับสิ่งที่ต้องการ อีกวิธีหนึ่งควรใช้ gitk, tig หรือโปรแกรมดู git อื่น ๆ
ในกรณีของคุณหากคุณพบแฮชสำหรับคอมมิต F บันทึกจะแสดงสิ่งนี้ให้คุณ
A---B---E---F
ง่ายและรวดเร็ว! ตอนนี้คุณสามารถค้นหาบริบทเบื้องหลังการกระทำที่ห้อยลงมาทั้งหมด
ป.ล. ใช่ฉันรู้ว่าโพสต์ช้า แต่ก็ดีใคร ๆ ก็เจอที่นี่และเห็นว่ามีประโยชน์ (ส่วนใหญ่น่าจะเป็นฉันใน 6 เดือนเมื่อฉันใช้ Google อีกครั้ง)
commit --amend
หรือrebase
กับผู้ที่ถูกทอดทิ้งโดยบังเอิญโดยการทำงานกับ HEAD ที่แยกออกมาพูด