CodeBlanks Logo Icon CodeBlanks

revert vs reset

revert'in geçmişi korurken reset'in sildiğini öğrenirsin.

Revert ile reset arasındaki fark

git reset, dal işaretçisini geriye çekerek belirtilen commit'ten sonraki kayıtları geçmişten tamamen siler. git revert ise hiçbir commit'i silmez; geçmişi olduğu gibi bırakıp en üste tersine çevirici yeni bir commit ekler. Bu fark özellikle ortak paylaşılan dallarda hayati önem taşır.

# Reset: gecmisi geriye ceker (gecmis silinir)
git reset --hard HEAD~1
# Revert: ileriye dogru yeni commit ekler (gecmis korunur)
git revert --no-edit HEAD

Reset yerel temizlikler için idealken, uzak sunucuya gönderilmiş kodlarda daima revert kullanılır.

Tarihçe bütünlüğü ve denetim izi

git revert kullanıldığında, hatanın ne zaman yapıldığı ve ne zaman düzeltildiği şeffaf bir denetim izi olarak korunur. git reset ise hatayı hiç yaşanmamış gibi yok eder; bu da hata ayıklama süreçlerinde ipuçlarının kaybolmasına yol açabilir. Ekip çalışmalarında üretim dalları için standart yöntem git revert'tir.

git log --oneline
# Revert "Hatali kod"
# Hatali kod
# Kararli surum

Tarihçenin şeffaf kalması, yazılımın gelişim sürecini denetlenebilir kılar.

Uygulama Revert sonrası commit sayısını doğrula

Son commit'i git revert --no-edit -q HEAD ile geri al ve toplam commit sayısını git rev-list --count HEAD ile ekrana bas.

Başlangıç kodu

terminal
git init -q -b main
git config user.name "Cem"
git config user.email "cem@example.com"
echo "stabil" > sistem.txt
git add sistem.txt
git commit -qm "Stabil surum"
echo "hata" >> sistem.txt
git add sistem.txt
git commit -qm "Hatali commit"

# Revert uygula ve toplam commit sayisini ekrana bas

Örnek çözüm

terminal
git init -q -b main
git config user.name "Cem"
git config user.email "cem@example.com"
echo "stabil" > sistem.txt
git add sistem.txt
git commit -qm "Stabil surum"
echo "hata" >> sistem.txt
git add sistem.txt
git commit -qm "Hatali commit"

git revert --no-edit -q HEAD
git rev-list --count HEAD

Beklenen çıktı

3

Soru ve cevaplar

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

1 Paylaşılan bir ana dalda hatalı bir commit geri alınmak istendiğinde neden git reset yerine git revert tercih edilmelidir?

  • git revert komutu terminalde grafik arayüz açarak çakışmaları engeller
  • git reset komutu yerel depoda her zaman hata verir ve çalışmaz
  • git reset geçmişi silerek takım arkadaşlarının deposunu bozar, revert ise güvenle yeni commit ekler Doğru cevap
  • git reset komutu yalnızca boş commit'leri geri alabilir

Açıklama: Paylaşılan dallarda geçmişi silmek (reset) diğer geliştiricilerin geçmişini bozar; revert ise geçmişi silmeden ileriye dönük yeni commit ekler.

2 Geri alma işleminde commit yapmadan sahnele

Soru
git revert ____ HEAD
Cevap
git revert -n HEAD

Açıklama: -n (veya --no-commit) seçeneği, tersine çevrilen değişiklikleri sahneye alır ancak otomatik commit üretmez.

3 Revert ve reset özellikleri

Kavram Anlamı
Revert yaklaşımı İleriye doğru yeni ters commit ekler
git reset Dal işaretçisini geriye taşır
Ortak dal kuralı Paylaşılan dalda revert kullanılır
Denetim izi Hataları ve geri almaları belgeler

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ışı