git reflog nedir? Yanlışlıkla silinen bir dalı veya reset --hard ile kaybolan commit'leri nasıl kurtarırsınız?

Cevap

git reflog, yerel depoda HEAD'in ve dalların geçtiği tüm konumların kaydıdır. Commit, checkout, reset, rebase, merge gibi her işlem buraya yazılır. Bir commit hiçbir daldan erişilemez hâle gelse bile reflog'da referansı durur ve Git onu bir süre silmez (varsayılan olarak erişilemeyen kayıtlar için 30 gün, diğerleri için 90 gün).

git reflog
# a1b2c3d HEAD@{0}: reset: moving to HEAD~3
# 9f8e7d6 HEAD@{1}: commit: ödeme sayfası eklendi
# 5c4b3a2 HEAD@{2}: commit: sepet hesaplaması düzeltildi

Senaryo 1: git reset --hard ile commit'leri kaybettim

git reflog                     # reset öncesi konumu bul: HEAD@{1}
git reset --hard HEAD@{1}      # o konuma geri dön
# veya daha güvenli: yeni bir dalda kurtar
git branch kurtarma 9f8e7d6

Senaryo 2: Merge edilmemiş bir dalı sildim

git branch -D feature/odeme    # "Deleted branch feature/odeme (was 9f8e7d6)."
git branch feature/odeme 9f8e7d6
# hash'i hatırlamıyorsanız: git reflog | grep odeme

Senaryo 3: Hatalı bir rebase

git reflog                     # "rebase (start)" satırından önceki konumu bul
git reset --hard HEAD@{5}
# veya: git reset --hard ORIG_HEAD (rebase/merge/reset sonrası Git bunu ayarlar)

Sınırlar

  • Reflog yereldir; push edilmez ve başka bir makinede bulunmaz.
  • Hiç commit edilmemiş değişiklikler reflog'da yoktur. reset --hard ile kaybolan commit edilmemiş değişiklikler genelde geri gelmez (sadece git add edilmişlerse git fsck --lost-found ile blob'lar bulunabilir).
  • git gc ve süre dolumu sonrası erişilemeyen commit'ler kalıcı olarak silinir.
  1. git merge ile git rebase arasındaki fark nedir?OrtaGitFull Stack
  2. git reset ile git revert arasındaki fark nedir?OrtaGitFull Stack
  3. İyi bir code review nasıl yapılır? .gitignore'a neler eklenmelidir?KolayGitFull Stack
  4. Interactive rebase ile commit'leri nasıl düzenler ve squash edersiniz?ZorGitFull Stack
  5. git cherry-pick ve git stash ne işe yarar? Hangi durumlarda kullanılır?OrtaGitFull Stack
  6. Merge conflict nedir ve nasıl çözülür?KolayGitFull Stack

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle