0Pricing
Git & GitHub Professional Workflow · Ders

Git Reflog ve Geçmişi Kurtarma

Kayıp gönderimleri veya dalları kurtarmak ve çalışmanız için bir güvenlik ağı sağlamak üzere `git reflog` konusunda ustalaşın.

Git Reflog ve Geçmişi Kurtarma, CoddyKit'te ücretsiz bir Git & GitHub Professional Workflow dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Git & GitHub Professional Workflow öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Git & GitHub Professional Workflow kursu toplamda 4 dersten oluşur.

Git Reflog nedir?

Bir dalı yanlışlıkla sildiniz veya yanlış işleme geri döndünüz mü? Panik yapmayın! Git'in Reflog adı verilen güçlü bir güvenlik ağı vardır.

Reflog (başvuru günlüğü), yerel deponuzda HEAD'in ve dal işaretçilerinin bulunduğu konumların kaydını tutar.

Reflog geçmişi nasıl izler

Proje dosyalarınızdaki değişiklikleri izleyen işleme geçmişinin (git log) aksine reflog, deponuzun başvurularındaki değişiklikleri izler.

HEAD'iniz (geçerli işlemeniz) veya bir dal işaretçisi her hareket ettiğinde Git bu olayı reflog'a kaydeder. Buna şunlar dahildir:

  • Değişiklikleri işleme
  • Dallar arasında geçiş yapma
  • Birleştirme veya yeniden temellendirme
  • Sıfırlama gerçekleştirme
  • Bir depoyu klonlama

Reflog'unuzu görüntüleme

Reflog'unuzu görmek için git reflog komutunu kullanmanız yeterlidir. Bu komut, eylemlerin listesini ve o sırada HEAD'inizin durumunu gösterir.

Birkaç eylemi benzetip ardından reflog'u görüntüleyelim:

git init my_repo
cd my_repo

echo "First line" > file.txt
git add file.txt
git commit -m "Initial commit"

echo "Second line" >> file.txt
git add file.txt
git commit -m "Add second line"

git reflog

Reflog girdilerini çözümleme

Her reflog girdisinin belirli bir biçimi vardır. Görebileceğiniz tipik bir girdiyi parçalara ayıralım:

a1b2c3d HEAD@{0}: commit: Add new feature

  • a1b2c3d: O sırada HEAD'in bulunduğu işlemenin SHA-1 karmasıdır.
  • HEAD@{0}: Bu, "reflog girdi işaretçisi"dir. @{0} en son durumu, @{1} ondan önceki durumu ve bu şekilde devam eden durumları belirtir.
  • commit: Add new feature: HEAD'in hareket etmesine neden olan eylemin açıklamasıdır.

Bu işaretçiler kurtarma için çok önemlidir!

Senaryo: Kayıp bir işlemeyi kurtarma

Bir işleme oluşturduğunuzu, ardından bunu git reset --soft HEAD~1 ile yanlışlıkla geri aldığınızı düşünün. İşlemeniz artık geçerli dal geçmişinizde değil, ancak gerçekten kaybolmuş da değil!

Reflog onu hatırlar. Bu yaygın hatayı benzetelim:

git init my_project_recovery
cd my_project_recovery

echo "Initial content" > start.txt
git add start.txt
git commit -m "Initial commit"

echo "Important feature" > feature.txt
git add feature.txt
git commit -m "Added an important feature"

# Oops! Accidentally reset
git reset --soft HEAD~1

git reflog

İşlemeyi geri getirme

Sıfırlamadan sonra git reflog komutunu çalıştırırsanız, "Added an important feature" işlemeniz için bir girdi görürsünüz; bu girdi muhtemelen HEAD@{1} veya benzer bir konumda olur.

Bu işlemeyi kurtarmak için reflog girdisini git reset ile kullanabilirsiniz. Örneğin, kayıp işlemenin karması abcdefg veya reflog girdisi HEAD@{1} ise:

# Assuming the lost commit was HEAD@{1} in the reflog
git reset --hard HEAD@{1}

# Or using the specific commit hash from reflog
# git reset --hard abcdefg

# Now, check your log. The commit is back!
git log --oneline

Senaryo: Silinen bir dalı geri alma

Bir dalı birleştirmeden önce yanlışlıkla sildiyseniz veya artık ona ihtiyacınız olmadığını düşündüyseniz ne olur?

Dallar, işlemelere işaret eden basit işaretçilerdir. Bir dalı sildiğinizde, onun işaret ettiği işlemeler deponuzdan hemen kaldırılmaz. Reflog, o dalın HEAD'inin nerede olduğunu hâlâ hatırlar!

Reflog'dan bir dalı geri yükleme

feature-x adında bir dalınız olduğunu, üzerinde çalıştığınızı ve ardından bu dalı git branch -D feature-x ile sildiğinizi varsayalım.

git reflog komutunu çalıştırdığınızda şu türde bir girdi görebilirsiniz:

1234567 HEAD@{5}: branch: Created branch feature-x veya
abcdefg HEAD@{2}: checkout: moving from feature-x to master

Dalı yeniden oluşturmak için, dalın etkin olduğu reflog girdisindeki işleme karmasını (ör. 1234567 veya abcdefg) kullanabilirsiniz:

# Assume 'feature-x' was deleted and its last commit was '1234567'

# Create a new branch pointing to that commit
git branch feature-x-recovered 1234567

# Now, check out your recovered branch
git checkout feature-x-recovered

# Verify its history
git log --oneline

Reflog girdilerinin süresi dolar

Reflog güçlü bir güvenlik ağı olsa da girdileri sonsuza kadar saklanmaz. Git, belirli bir süre geçtikten sonra eski reflog girdilerini temizler.

  • Varsayılan olarak erişilebilir girdilerin (geçerli HEAD'inizden erişilebilenler) süresi 90 gün sonra dolar.
  • Erişilemeyen girdilerin (ör. silinen dallardan veya artık başvurulmayan işlemelerden kalanlar) süresi 30 gün sonra dolar.

Bu nedenle "kayıp" çalışmalarınızı gecikmeden kurtarmanız en iyisidir!

Reflog kurtarma görevi

Yeni bir özellik dalı oluşturdunuz, birkaç işleme yaptınız ve ardından dalı birleştirmeden yanlışlıkla sildiniz. git reflog komutunu çalıştırdığınızda şu girdiyi görüyorsunuz:

...
c0ffee1 HEAD@{3}: commit: Implement new user profile page
bada55e HEAD@{4}: checkout: moving from feature/profile to main
...

Silinmeden önce sahip olduğu en son işlemeye işaret eden feature/profile dalını doğru şekilde yeniden oluşturacak komut dizisi hangisidir?

Reflog: Git güvenlik ağınız

Yerel Git deponuzdaki "kayıp" çalışmaları kurtarmak için önemli bir araç olan git reflog'u kullanmayı öğrendiniz. Şunları unutmayın:

  • HEAD'in ve dal işaretçilerinin bulunduğu konumları izler.
  • Bu geçmişi görüntülemek için git reflog komutunu kullanın.
  • Reflog girdileriyle (HEAD@{n} veya işleme karmaları) git reset ya da git branch kullanarak işlemeleri veya dalları kurtarabilirsiniz.
  • Reflog girdilerinin süresi dolar; bu nedenle bir şeyi kurtarmanız gerekiyorsa hızlı davranın!

Git geçmişinizi temiz tutun, ancak acil durumlarda reflog'un orada olduğunu bilin!

Sıkça Sorulan Sorular

“Git Reflog ve Geçmişi Kurtarma” dersi ücretsiz mi?

Evet — “Git Reflog ve Geçmişi Kurtarma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Git & GitHub Professional Workflow kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Git & GitHub Professional Workflow kursu toplamda 4 dersten oluşur.

“Git Reflog ve Geçmişi Kurtarma” dersinde ne öğreneceğim?

Kayıp gönderimleri veya dalları kurtarmak ve çalışmanız için bir güvenlik ağı sağlamak üzere `git reflog` konusunda ustalaşın. Git & GitHub Professional Workflow ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Git & GitHub Professional Workflow öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Git & GitHub Professional Workflow, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Git Reflog ve Geçmişi Kurtarma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Git & GitHub Professional Workflow dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Git & GitHub Professional Workflow dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Git Reflog ve Geçmişi Kurtarma
  2. Hata Ayıklama için Git Bisect
  3. Depo Bakımı ve Düzenleme
  4. git filter-repo ile Geçmişi Yeniden Yazma
← Git & GitHub Professional Workflow Sayfasına Dön