CodeBlanks Logo Icon CodeBlanks

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.

Başlangıç kodu

terminal
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

terminal
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

Beklenen çı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

Soru
git reset ____ HEAD~1
Cevap
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

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