Bu sorunu nasıl çözerim? Kullanım git fsck
ve günlük tutma!
Önce kayıp (ulaşılamaz) taahhütler ve lekeler içeren bir dosya oluşturun. (NOT: Eğer böyle bir şey yaptıysanız git gc
, tüm taahhütlerini toplayacak ve burada bulamayacaksınız!)
$git fsck --lost-found > lost_found.commits
Bu size şöyle bir dosya verir:
sarkan dec2c5e72a81ef06963397a49c4b068540fc0dc3 taahhüt
sarkan damla f8c2579e6cbfe022f08345fa7553feb08d60a975
sarkan blob 0eb3e86dc112332ceadf9bc826c49bd371acc194
sarkan damla 11cbd8eba79e01f4fd7f496b1750953146a09502
sarkan taahhüt 18733e44097d2c7a800650cea442febc5344f9b3
sarkan damla 1e53a5cdb3ecdde27081ec6e8b31e4070106ee05
Daha sonra bu dosyayı, favori / blog karmasını oradan kopyalamak için favori metin düzenleyicinizle açabilirsiniz. (* öksürük * vim makroları bunun için harika çalışır * öksürük *)
Şimdi bu işlemden benzer bir şeyle tekrar giriş yapabilirsiniz git log --oneline <commit hash>
. Alternatif olarak, gitk, tig veya başka bir git görüntüleyici çalışmalıdır.
Sizin durumunuzda, F komutunun karmasını bulursanız, günlük size böyle bir şey gösterir,
A---B---E---F
Çabuk ve kolay! Artık tüm bu sarkan taahhütlerin ardındaki bağlamı bulabilirsiniz.
PS Evet, biliyorum, geç yazı, ama ah, biri burada bulabilir ve yararlı bulabilir. (Büyük olasılıkla 6 ay içinde bunu tekrar google'a gittiğimde)
commit --amend
veyarebase
müstakil HEAD ile çalışarak yanlışlıkla öksüz kalan bir taahhüt arasında kesinlikle hiçbir fark yoktur .