git reflog bisa datang untuk menyelamatkanmu.
Ketik di konsol Anda dan Anda akan mendapatkan daftar riwayat git Anda bersama dengan SHA-1 yang mewakili mereka.
Cukup lakukan pembayaran SHA-1 yang ingin Anda kembalikan
Sebelum menjawab mari tambahkan beberapa latar belakang, menjelaskan apa ini HEAD.
First of all what is HEAD?
HEADhanyalah referensi ke komit saat ini (terbaru) di cabang saat ini.
Hanya boleh ada satu orang HEADpada waktu tertentu. (tidak termasuk git worktree)
Konten HEADdisimpan di dalam.git/HEAD dan berisi 40 byte SHA-1 dari komit saat ini.
detached HEAD
Jika Anda tidak berada di komit terbaru - artinya HEADmenunjuk ke komit sebelumnya dalam riwayat panggilannyadetached HEAD .

Pada baris perintah, akan terlihat seperti ini- SHA-1 sebagai ganti nama cabang karena HEADtidak mengarah ke ujung cabang saat ini


Beberapa opsi tentang cara memulihkan dari HEAD yang terlepas:
git checkout <commit_id>
git checkout -b <new branch> <commit_id>
git checkout HEAD~X // x is the number of commits t go back
Ini akan memeriksa cabang baru yang menunjuk ke komit yang diinginkan.
Perintah ini akan memeriksa komit yang diberikan.
Pada titik ini, Anda dapat membuat cabang dan mulai bekerja dari titik ini.
# Checkout a given commit.
# Doing so will result in a `detached HEAD` which mean that the `HEAD`
# is not pointing to the latest so you will need to checkout branch
# in order to be able to update the code.
git checkout <commit-id>
# create a new branch forked to the given commit
git checkout -b <branch name>
Anda selalu dapat menggunakan reflog juga.
git reflogakan menampilkan perubahan apa pun yang memperbarui HEADdan memeriksa entri reflog yang diinginkan akan mengaturHEAD kembali ke komit ini.
Setiap kali HEAD diubah, akan ada entri baru di reflog
git reflog
git checkout HEAD@{...}
Ini akan membuat Anda kembali ke komitmen yang Anda inginkan

"Pindahkan" HEAD Anda kembali ke komit yang diinginkan.
git reset --hard 0d1d7fc32
git stash
git reset --hard 0d1d7fc32
git stash pop
- Catatan: ( Sejak Git 2.7 )
Anda juga dapat menggunakan file git rebase --no-autostash.
"Urungkan" rentang komit atau komit yang diberikan.
Perintah reset akan "membatalkan" setiap perubahan yang dibuat dalam komit yang diberikan.
Komit baru dengan tambalan urung akan dilakukan sementara komit asli juga akan tetap ada dalam riwayat.
git revert <sha-1>
Skema ini menggambarkan perintah mana yang melakukan apa.
Seperti yang Anda lihat di sana, reset && checkoutmodifikasi file HEAD.
