git reflog kurtarmaya gelebilir.
Konsolunuza yazın ve SHA-1 ile birlikte onları temsil eden git geçmişinizin bir listesini alacaksınız.
Geri dönmek istediğiniz herhangi bir SHA-1'i kontrol edin
Cevap vermeden önce, bunun ne olduğunu açıklayan biraz arka plan ekleyelim HEAD.
First of all what is HEAD?
HEADsadece geçerli şubedeki mevcut commit (en son) için bir referanstır. Herhangi bir zamanda
yalnızca bir single olabilir HEAD. (hariç git worktree)
Öğesinin içeriği içinde HEADsaklanır .git/HEADve geçerli kaydetmenin 40 baytlık SHA-1'ini içerir.
detached HEAD
Eğer en son commit'de değilseniz - yani HEADtarihteki önceki bir taahhüdü işaret ediyor demektir detached HEAD.

Komut satırında, HEADşu anki dalın ucuna işaret etmediği için dal adı yerine SHA-1 gibi görünecektir.


Ayrılmış bir HEAD'den nasıl kurtarılacağına dair birkaç seçenek:
git checkout <commit_id>
git checkout -b <new branch> <commit_id>
git checkout HEAD~X // x is the number of commits t go back
Bu, istenen kaydı işaret eden yeni şubeyi teslim alacaktır.
Bu komut, belirli bir commit için çıkış yapacaktır.
Bu noktada bir şube oluşturabilir ve bu noktadan itibaren çalışmaya başlayabilirsiniz.
# 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>
Daima kullanabilirsiniz reflog. istenen reflog girişini
git refloggüncelleyen HEADve kontrol eden herhangi bir değişikliği HEADbu commit için geri döndürecektir.
HEAD her değiştirildiğinde, yeni bir giriş olacaktır. reflog
git reflog
git checkout HEAD@{...}
Bu sizi istediğiniz taahhüdünüze geri götürecektir

HEAD'inizi istenen işleme geri "taşıyın".
git reset --hard 0d1d7fc32
git stash
git reset --hard 0d1d7fc32
git stash pop
- Not: ( Git 2.7 yana )
ayrıca kullanabilirsiniz git rebase --no-autostashsıra.
Verilen kaydetme veya kaydetme aralığını "geri alın".
Reset komutu, verilen işlemde yapılan değişiklikleri "geri alır".
Geri alma yamasıyla yeni bir taahhütte bulunulacak ve orijinal kesinleştirme de geçmişte kalacaktır.
git revert <sha-1>
Bu şema, hangi komutun ne yaptığını gösterir.
Orada gördüğünüz gibi reset && checkoutdeğiştirin HEAD.
