Bagaimana saya mengatasi masalah ini? Gunakan git fsck
dan masuk!
Pertama buat file yang mengandung komit dan gumpalan yang hilang (tidak dapat dijangkau). (CATATAN: jika Anda melakukan sesuatu seperti git gc
itu maka akan mengumpulkan sampah semua komitmen mereka dan Anda tidak akan menemukannya di sini!)
$git fsck --lost-found > lost_found.commits
Itu memberi Anda file seperti ini:
menjuntai berkomitmen dec2c5e72a81ef06963397a49c4b068540fc0dc3
menjuntai gumpalan f8c2579e6cbfe022f08345fa7553feb08d60a975
menjuntai gumpalan 0eb3e86dc112332ceadf9bc826c49bd371acc194
menjuntai gumpalan 11cbd8eba79e01f4fd7f496b1750953146a09502
menjuntai berkomitmen 18733e44097d2c7a800650cea442febc5344f9b3
menggantung gumpalan 1e53a5cdb3ecdde27081ec6e8b31e4070106ee05
Anda kemudian dapat membuka file ini dengan editor teks favorit Anda untuk menyalin hash komit / blog dari sana. (* batuk * vim macro sangat cocok untuk ini * batuk *)
Sekarang Anda dapat masuk kembali dari komit ini dengan sesuatu seperti git log --oneline <commit hash>
. Atau, gitk, tig, atau penampil git lainnya harus berfungsi.
Dalam kasus Anda jika Anda menemukan hash untuk melakukan F log akan menunjukkan kepada Anda sesuatu seperti ini,
A---B---E---F
Cepat dan mudah! Sekarang Anda dapat menemukan konteks di balik semua komitmen yang menggantung itu.
PS Ya, saya tahu, posting terlambat, tapi oh well, seseorang mungkin menemukannya di sini dan merasa berguna. (Kemungkinan besar saya dalam 6 bulan ketika saya google ini lagi)
commit --amend
ataurebase
dan yang tidak sengaja menjadi yatim piatu dengan bekerja dengan KEPALA lepas, katakanlah.