Jawaban singkat:
git reset 'HEAD@{1}'
Jawaban panjang:
Git menyimpan log semua pembaruan ref (misalnya, checkout, reset, komit, gabung). Anda dapat melihatnya dengan mengetik:
git reflog
Di suatu tempat dalam daftar ini adalah komit yang hilang. Katakanlah Anda baru saja mengetik git reset HEAD~
dan ingin membatalkannya. Reflog saya terlihat seperti ini:
$ git reflog
3f6db14 HEAD@{0}: HEAD~: updating HEAD
d27924e HEAD@{1}: checkout: moving from d27924e0fe16776f0d0f1ee2933a0334a4787b4c
[...]
Baris pertama mengatakan bahwa HEAD
0 posisi yang lalu (dengan kata lain, posisi saat ini) adalah 3f6db14; itu diperoleh dengan mengatur ulang ke HEAD~
. Baris kedua mengatakan bahwa HEAD
1 posisi yang lalu (dengan kata lain, status sebelum reset) adalah d27924e. Itu diperoleh dengan memeriksa komit tertentu (meskipun itu tidak penting sekarang). Jadi, untuk membatalkan pengaturan ulang, jalankan git reset HEAD@{1}
(atau git reset d27924e
).
Jika, di sisi lain, Anda telah menjalankan beberapa perintah lain sejak saat itu memperbarui HEAD, komit yang Anda inginkan tidak akan berada di bagian atas daftar, dan Anda harus mencari melalui reflog
.
Satu catatan terakhir: Mungkin lebih mudah untuk melihat reflog
cabang tertentu yang ingin Anda hapus, katakanlah master, daripada HEAD
:
$ git reflog show master
c24138b master@{0}: merge origin/master: Fast-forward
90a2bf9 master@{1}: merge origin/master: Fast-forward
[...]
Ini seharusnya memiliki lebih sedikit noise daripada yang umum HEAD reflog
.