git reset --hard HEAD~1 Komutunu Geri Alma

Yanlışlıkla git reset --hard HEAD~1 komutunu çalıştırmak, geliştiriciler için sinir bozucu bir deneyim olabilir. Bu komut, en son commit’i ve onunla birlikte gelen tüm değişiklikleri geri alınamaz bir şekilde siler, sizi zor bir durumda bırakır. Ancak endişelenmeyin—bu kaybolan commitleri geri getirmenin bir yolu var, yeter ki bunlar çöp temizleme (garbage collection) işlemi ile silinmemiş olsun. Bu yazıda, bu komutun etkilerini nasıl geri alabileceğinizi ve dosyalarınızı nasıl kurtarabileceğinizi derinlemesine inceleyeceğiz.

Sorunu Anlamak

git reset --hard HEAD~1 komutunu çalıştırdığınızda, Git HEAD işaretçisini bir commit geriye alır. Bu işlem, en son commit’te yapılan ve çalışma dizinindeki tüm değişiklikleri görmezden gelir. Kodda bu komut aşağıdaki şekilde görünür:

git reset --hard HEAD~1

Sorun, sıfırlama işleminden sonra commitlerinizin ve değişikliklerinizin kaybolmuş gibi görünmesidir; ama neyse ki, Git HEAD üzerinde yapılan tüm değişiklikleri görebileceğiniz bir referans günlüğü (reflog) tutar ve bu da kurtarma yolunu sunar.

Çözüm: Git Reflog Kullanımı

1. Reflog’u Kontrol Et

Kayıp commitinizi kurtarmanın ilk adımı reflog’unuzu kontrol etmektir. Reflog, HEAD işaretçisindeki güncellemeleri takip eder, bu da sıfırlama komutunu çalıştırmadan önce HEAD‘ınızın nerede olduğunu görebileceğiniz anlamına gelir.

Reflog’unuzu kontrol etmek için aşağıdaki komutu çalıştırın:

git reflog

Aşağıdakine benzer bir çıktı göreceksiniz:

1a75c1d... HEAD@{0}: reset --hard HEAD^: updating HEAD
f6e5064... HEAD@{1}: commit: added file2

Bu durumda, f6e5064 kaybolan commit’in hash’idir (daha önce file2 eklediğiniz yer).

2. Kaybolan Commit’e Geri Dönmek

Artık commit referansına (f6e5064) sahip olduğunuza göre, önceki durumunuzu geri yüklemek için aşağıdaki komutu çalıştırabilirsiniz:

git reset --hard f6e5064

Bu komutu çalıştırdıktan sonra, depo file2 eklenmiş haliyle eski durumuna geri dönecektir. Dosyanın başarılı bir şekilde geri yüklendiğini kontrol etmek için içeriğini kontrol edebilirsiniz:

cat file2

Eğer beklenen çıktıyı (bu durumda, file2’nin içeriği) görüyorsanız, kurtarma işleminizin başarılı olduğunu doğrulamış olursunuz.

Özet

Bir hard reset nedeniyle çalışmanızı kaybetmek, projeniz için felaket anlamına gelmemelidir. Reflog’u kullanarak kaybolan commitleri sadece birkaç komutla kolayca kurtarabilirsiniz.

Temel Noktalar:

  • Reflog dostunuzdur: Kaybolan commitleri bulmak için git reflog kullanın.
  • Sıfırlama: Gerekirse önceki commit’lere dönmek için git reset --hard <commit-hash> kullanın.
  • Sakin Olun: Paniklemenize gerek yok; Git, bu tür işlemlerden kurtulmak için mekanizmalar sunar.

Bu ipuçları ile gelecekte Git komutları ile ilgili hataları daha iyi yönetmeye hazır olacaksınız!