revert vs reset
- Git kursu
- Orta seviye
- Ders 38/82
- 4 dk
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 HEADReset 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 surumTarihç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
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
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 HEADBeklenen çı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
git revert ____ HEAD
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 |