Git Stash Nedir?
Geliştirme sürecinin ortasındayken, acil bir hata düzeltmesi yapmak veya başkasının kodunu incelemek için dal (branch) değiştirmeniz gerektiğinde bir sorunla karşılaşırsınız: Yaptığınız değişiklikler henüz commit edilecek durumda değildir, ancak kirli bir çalışma diziniyle dal değiştiremezsiniz. git stash bu sorunu çözer. Takip edilen dosyalarınızdaki taahhüt edilmemiş (uncommitted) değişiklikleri geçici bir yığına (stack) kaydeder, böylece daha sonra bunları geri yükleyebilirsiniz.
Bu rehber, git stash kullanarak değişiklikleri kaydetme, listeleme, uygulama ve silme işlemlerini açıklamaktadır.
Temel Kullanım
En basit haliyle git stash komutu, takip edilen dosyalardaki tüm değişiklikleri kaydeder ve çalışma dizinini son commit ile eşleşecek şekilde sıfırlar:
git stash
Bu işlemden sonra çalışma dizininiz temizlenir. Artık güvenle dal değiştirebilir, güncellemeleri çekebilir veya bir hotfix uygulayabilirsiniz. Çalışmanıza geri dönmeye hazır olduğunuzda, yığındaki değişiklikleri geri yükleyebilirsiniz.
İpucu: Varsayılan olarak
git stashhem aşamalanmış (staged) hem de aşamalanmamış (unstaged) değişiklikleri kaydeder. İzlenmeyen (untracked) veya göz ardı edilen (ignored) dosyaları açıkça belirtmedikçe kaydetmez.
Mesajlı Stash Oluşturma
Sadece git stash kullanıldığında, yığındaki her giriş sadece dal adını ve son commit mesajını gösterir. Birden fazla yığın olduğunda bu durum kafa karıştırıcı olabilir. Açıklayıcı bir etiket eklemek için -m (message) kullanın:
git stash push -m "WIP: kullanıcı kimlik doğrulama formu"
Bu, daha sonra yığınları listelediğinizde doğru olanı kolayca tanımlamanızı sağlar.
Yığınları Listeleme
Kaydedilmiş tüm yığınları görmek için:
git stash list
Çıktı şu şekilde görünecektir:
stash@{0}: On main: WIP: kullanıcı kimlik doğrulama formu
stash@{1}: WIP on main: abc1234 Login sayfası eklendi
Yığınlar en yeniden (stash@{0}) en eskiye doğru indekslenir. Belirli bir yığını uygulamak veya silmek istediğinizde bu indeks kullanılır.
Uygulamadan önce bir yığının içeriğini incelemek için git stash show kullanın. Tam farkı (diff) görmek için -p ekleyin:
git stash show -p stash@{0}
Yığınları Uygulama
Bir yığını geri yüklemenin iki ana yolu vardır:
git stash pop: En yeni yığını uygular ve yığın listesinden hemen kaldırır. Tek seferlik geri yüklemeler için idealdir.git stash apply: Yığını uygular ancak listede tutar. Aynı yığını başka bir dala uygulamak isterseniz bu kullanışlıdır.
Belirli bir yığını uygulamak için indeksini belirtin:
git stash apply stash@{1}
Çatışma Yönetimi: Yığını uygularken çatışmalar (conflicts) oluşursa, bunları normal bir birleştirme çatışması gibi çözün, çözülen dosyaları aşamalayın (stage) ve ardından commit edin.
İzlenmeyen ve Göz Ardı Edilen Dosyaları Stash Etme
Varsayılan olarak git stash sadece Git tarafından takip edilen dosyalardaki değişiklikleri kaydeder. Yeni oluşturduğunuz ve henüz aşamalamadığınız dosyalar geride kalır.
- İzlenmeyen dosyaları dahil etmek için:
git stash -u(veya--include-untracked). - İzlenmeyen ve
.gitignoretarafından göz ardı edilen dosyaları (örneğin, derleme çıktıları) dahil etmek için:git stash -a(veya--all).
Yığından Yeni Dal Oluşturma
Eğer yığınınızdaki çalışmalarınız temel dal ile çok fazla ayrıldıysa ve apply yaparken çatışma riski varsa, doğrudan yığından yeni bir dal oluşturmak en güvenli yoldur:
git stash branch yeni-dal-adi
Bu komut, yığının oluşturulduğu commit noktasında yeni bir dal oluşturur, yığını uygular ve temiz bir şekilde uygulandıysa yığını listeden siler.
Yığınları Silme
Belirli bir yığını listeden kaldırmak için:
git stash drop stash@{0}
Tüm yığınları tek seferde silmek için (dikkatli kullanın):
git stash clear
Hızlı Başvuru
| Komut | Açıklama |
|---|---|
git stash |
Aşamalanmış ve aşamalanmamış değişiklikleri yığ. |
git stash push -m "mesaj" |
Açıklayıcı etiketle yığ. |
git stash list |
Tüm yığınları listele. |
git stash pop |
En yeni yığını uygula ve sil. |
git stash apply stash@{0} |
Yığını uygulamadan listede tut. |
git stash branch yeni-dal |
Yığından yeni bir dal oluştur. |
git stash clear |
Tüm yığınları sil. |



