CodeBlanks Logo Icon CodeBlanks

Belirli commit geri

Belirli bir commit'i geri almayı öğrenirsin.

Geçmişteki belirli bir commit'i revert etme

git revert, yalnızca en son commit'i (HEAD) değil, geçmişteki herhangi bir commit'i de geri alabilir. Arada başka commit'ler yapılmış olsa bile Git, yalnızca hedef commit'in getirdiği satırları tespit edip onların tersini uygular. Hedef commit'in referansını veya hash değerini komuta parametre olarak verirsin.

# Gecmisteki belirli bir commit'i geri al:
git revert --no-edit 7b2a9c1
git revert --no-edit HEAD~1

Bu seçici yaklaşım, aradaki faydalı geliştirmeleri kaybetmeden eski bir hatayı ayıklamanı sağlar.

Revert sırasında çakışmalar

Geri alınmak istenen commit'in değiştirdiği satırlar sonraki commit'lerde tekrar düzenlendiyse bir çakışma (conflict) ortaya çıkabilir. Çakışma çıktığında dosyaları düzenleyip git add ile sahneledikten sonra git revert --continue komutuyla işlemi tamamlarsın. Vazgeçmek istersen git revert --abort komutuyla depoyu geri alabilirsin.

# Cakismayi cozup devam et:
git add dosya.txt
git revert --continue
# Islemi tamamen iptal et:
git revert --abort

Bu esneklik, karmaşık geri alma operasyonlarını güvenle yönetmeni sağlar.

Uygulama Geçmişteki commit'i geri al

HEAD~1 commit'ini git revert --no-edit -q HEAD~1 komutuyla geri al ve son commit başlığını git log -1 --format="%s" ile ekrana yazdır.

Başlangıç kodu

terminal
git init -q -b main
git config user.name "Bahar"
git config user.email "bahar@example.com"
echo "a" > a.txt
git add a.txt
git commit -qm "A eklendi"
echo "b" > b.txt
git add b.txt
git commit -qm "B eklendi"
echo "c" > c.txt
git add c.txt
git commit -qm "C eklendi"

# HEAD~1 commit'ini revert et ve son basligi yazdir

Örnek çözüm

terminal
git init -q -b main
git config user.name "Bahar"
git config user.email "bahar@example.com"
echo "a" > a.txt
git add a.txt
git commit -qm "A eklendi"
echo "b" > b.txt
git add b.txt
git commit -qm "B eklendi"
echo "c" > c.txt
git add c.txt
git commit -qm "C eklendi"

git revert --no-edit -q HEAD~1
git log -1 --format="%s"

Beklenen çıktı

Revert "B eklendi"

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Aradan birkaç commit geçtikten sonra geçmişteki belirli bir commit'i geri almak istediğinde ne yaparsın?

  • İlgili commit'in hash değerini git revert komutuna parametre verirsin Doğru cevap
  • .git klasöründeki geçmiş commit dosyasını elle silersin
  • git stash drop komutuyla geçmişteki commit'i yığından silersin
  • Depoyu git reset --hard ile o commit'e sıfırlayıp aradaki işleri silersin

Açıklama: git revert <hash>, aradaki diğer commit'lere dokunmadan yalnızca belirtilen commit'in değişikliklerini tersine çeviren yeni bir commit üretir.

2 Revert işleminden vazgeç

Soru
git revert ____
Cevap
git revert --abort

Açıklama: --abort seçeneği, devam eden revert sürecini iptal eder ve depoyu revert başlamadan önceki haline döndürür.

3 Commit geri alma komutları

Kavram Anlamı
git revert <hash> Belirtilen commit'i tersine çevirir
--continue Çakışma çözülünce revert'i tamamlar
--abort Revert işlemini iptal eder
Seçici geri alma Aradaki commit'lere dokunmaz

Orta seviye bölümündeki tüm dersler

20 Orta seviye finali

  1. Dal yönetimi
  2. Rebase
  3. Çatışma
  4. PR akışı