soft mixed hard
- Git kursu
- Orta seviye
- Ders 42/82
- 4 dk
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~1Bu 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~1Geri 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.
Başlangıç kodu
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"
# HEAD~1'e soft reset at ve kisa durumu basÖrnek çözüm
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 -sBeklenen çıktı
M app.py
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 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 Doğru cevap
- Tamamen silinir ve geri getirilemez
Açıklama: --soft modu HEAD'i geri çekerken değişiklikleri sahnelenmiş halde korur; böylece yeni bir mesajla hemen yeniden commit edilebilir.
2 Tüm değişiklikleri silerek sıfırla
git reset ____ HEAD~1
git reset --hard HEAD~1
Açıklama: --hard seçeneği geçmişi, sahneyi ve çalışma alanını hedef commit'e eşitler; aradaki değişiklikleri yok eder.
3 Reset modları
| Kavram | Anlamı |
|---|---|
--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 |