Git
soft mixed hard
soft, mixed ve hard modlarının farkını öğrenirsin.
Üç reset modu: soft, mixed, hard
git reset, Git'in üç alanını (Commit geçmişi, Sahneleme alanı, Çalışma dizini) farklı şekillerde etkileyen üç ana moda sahiptir. --soft, yalnızca commit geçmişini geriye çeker ve değişiklikleri sahnede (staged) tutar. --mixed (varsayılan mod), commit geçmişini çeker ve sahneyi temizler; ancak çalışma alanındaki dosyalara dokunmaz.
# Sahneyi koruyarak geri al:
git reset --soft HEAD~1
# Sahneyi de bosaltarak geri al (varsayilan):
git reset --mixed HEAD~1
Bu modlar geri alma sonrasında değişikliklerin nerede duracağını belirler.
Tehlikeli mod: --hard
--hard modu hem commit geçmişini geriye çeker, hem sahneyi temizler, hem de çalışma dizinindeki tüm dosyaları hedef commit'in haline sıfırlar. Henüz commit edilmemiş veya geri alınan commit'teki tüm yerel değişiklikler kalıcı olarak yok edilir. Bu nedenle --hard bayrağı yalnızca yapılan değişikliklerden tamamen vazgeçildiğinde kullanılmalıdır.
# Tum degisiklikleri yok ederek HEAD~1 haline don:
git reset --hard HEAD~1
Geri dönüşü olmayan veri kaybı yaşamamak için bu komutu çalıştırmadan önce dikkatli olmalısın.
Uygulama Soft reset ile değişiklikleri sahnede tut
Son commit'i git reset --soft HEAD~1 ile geri al ve git status -s ile değişikliklerin sahnede kaldığını ekrana yazdır.
Örnek çözümü göster
git init -q -b main
git config user.name "Deniz"
git config user.email "deniz@example.com"
echo "v1" > app.py
git add app.py
git commit -qm "v1"
echo "v2" > app.py
git commit -am -q "v2"
git reset --soft HEAD~1
git status -s
Kendini test et
-
git reset --soft HEAD~1 çalıştırıldığında geri alınan commit'teki değişiklikler nerede bulunur?
- Yalnızca git stash yığınına aktarılır
- Çalışma alanında takip edilmeyen dosya olurlar
- Sahneleme alanında (staging area) hazır beklerler
- Tamamen silinir ve geri getirilemez
Cevabı göster
Sahneleme alanında (staging area) hazır beklerler — --soft modu HEAD'i geri çekerken değişiklikleri sahnelenmiş halde korur; böylece yeni bir mesajla hemen yeniden commit edilebilir.
-
Tüm değişiklikleri silerek sıfırla
git reset ____ HEAD~1
Cevabı göster
git reset --hard HEAD~1
-
Reset modları
- --soft
- Değişiklikleri sahnede tutar
- --mixed
- Sahneyi boşaltır, dosyaları korur
- --hard
- Tüm değişiklikleri kalıcı siler
- Varsayılan mod
- --mixed seçeneğidir
Sıradaki ders: HEAD referansı