Git Reflog
Son güncelleme
git reflog, HEAD'in işaret ettiği her yeri kaydeder - her commit, checkout, reset ve rebase. Git bu commit'leri dallarınızdan çıktıktan sonra bile bir süre sakladığı için reflog sizin güvenlik ağınızdır: bir reset --hard, kötü bir rebase veya silinen bir dalın yok ettiğini sandığınız çalışmayı bulmanızı ve kurtarmanızı sağlar.
Bunları terminal playground'da deneyin - tarayıcınızda gerçek bir kabuk, kurulacak hiçbir şey yok.
Söz dizimi
| Command | What it does |
|---|---|
git reflog | HEAD'in son konumlarını hash'leriyle birlikte gösterir |
git reflog show <branch> | Bir dalın reflog'unu gösterir |
git reset --hard HEAD@{1} | HEAD'i önceki bir konuma geri götürür |
git branch recovered <hash> | Kaybolan bir commit'te bir dalı yeniden oluşturur |
Bir hatadan sonra kurtarma
Reset öncesindeki commit'i bularak hatalı bir reset'i geri alın.
| Step | Command | Result |
|---|---|---|
| 1 | git reflog | Reset öncesindeki commit'i bulun |
| 2 | git reset --hard HEAD@{1} | Dalınızı ona geri yükleyin |
git reflog SSS
git reflog nedir?
Yerel deponuzda
HEAD'in (ve her dal ucunun) işaret ettiği tüm yerlerin bir günlüğüdür - commit'ler, checkout'lar, reset'ler, merge'ler ve rebase'lerin ardından. Commit soy zincirini takip eden git log'un aksine reflog, eylemlerinizin kronolojik bir kaydıdır ve onu kurtarma için kullanışlı kılan da budur.git reset --hard sonrası bir commit'i nasıl kurtarırım?
Reset'ten önce bulunduğunuz commit'in girdisini bulmak için
git reflog çalıştırın (HEAD@{1} gibi bir şey), ardından ona dönmek için git reset --hard <that-hash> (veya HEAD@{1}) komutunu kullanın. Commit aslında silinmedi - sadece onu işaret eden bir dalı kalmadı ve reflog hâlâ hash'ini biliyor.Silinen bir dalı nasıl geri getiririm?
Dalın son commit'ini
git reflog içinde bulun, ardından dalı orada yeniden oluşturun: git branch <name> <hash>. Silme işlemi yeni olduğu sürece (Git'in reflog geçerlilik süresi içinde, genellikle haftalar), commit'lere bu şekilde hâlâ ulaşılabilir.git reflog klonlar arasında çalışır mı?
Hayır - reflog deponuza özeldir ve push edilmez veya klonlanmaz. Yalnızca kendi makinenizdeki eylemleri kaydeder. Bu yüzden yerel hataları kurtarabilir ancak yalnızca farklı bir klonda var olan bir şeyi kurtaramaz.
Bunu çevrimiçi olarak deneyebilir miyim?
Evet.
git reflog'u tarayıcınızda gerçek bir kabukta çalıştırmak için terminal playground'ı açın - kurulacak hiçbir şey yok. Coddy'nin ücretsiz etkileşimli Git kursu da değişiklikleri geri alma ve kurtarma konusunu adım adım ele alır.