Git Stash
- Okunuşu
- git steş
Kısaca
Git stash, commit edilmemiş değişiklikleri geçici olarak saklayıp çalışma dizinini temizleyen komuttur; başka işe geçip çalışmanıza sonra dönmenizi sağlar.
git stash nedir?
Git stash, commit oluşturmadan commit edilmemiş değişikliklerinizi bir kenara koyan bir Git komutudur. git stash çalıştırmak, değiştirilmiş izlenen dosyalarınızı ve stage edilmiş değişikliklerinizi kaydeder, ardından çalışma dizinini son commit ile eşleşecek şekilde sıfırlar. Daha sonra kaydedilen değişiklikleri geri getirebilir ve tam kaldığınız yerden devam edebilirsiniz.
Her stash, bir yığın (stack) üzerinde özel bir commit olarak saklanır; en yeni olan stash@{0}, ondan önceki stash@{1} olur ve böyle devam eder. git stash pop en son stash'i yeniden uygular ve yığından kaldırır; git stash apply ise yeniden uygular ancak bir kopyasını tutar. Yeni izlenmeyen (untracked) dosyalar varsayılan olarak stash'lenmez; bunları dahil etmek için -u, stash'e açıklayıcı bir mesaj vermek için -m ekleyin. Stash'lenen değişiklikler sonradan yapılan düzenlemelerle çakışırsa Git bir merge çakışması bildirir ve bunu her zamanki gibi çözersiniz.
Bunu, masanızda biri acil yardım istediğinde yarım kalmış evraklarınızı bir çekmeceye koymak gibi düşünün. Yaygın bir durum, bir özellik üzerinde çalışırken kritik bir hata bildiriminin gelmesidir: özellik çalışmanızı stash'ler, başka bir branch'e geçer, hatayı düzeltir, sonra geri dönüp stash'inizi pop edersiniz.
Stash'lemek sıklıkla commit ile karıştırılır. Commit, proje geçmişinin kalıcı ve paylaşılabilir bir parçasıdır; stash ise makinenize yereldir, hiçbir zaman uzak depoya push edilmez ve unutulması kolaydır. Kısa bir sapmadan uzun sürecek işler için, kendi branch'inde yapılmış bir yarım kalmış iş (work-in-progress) commit'i çoğu zaman daha güvenlidir.
Önemli noktalar
git stashcommit edilmemiş değişiklikleri kaydeder ve çalışma dizinini temizler.- Stash'ler bir yığında tutulur ve
stash@{0}her zaman en yenisidir. popbir stash'i geri yükler ve kaldırır,applyise geri yükler ve tutar.- İzlenmeyen dosyalar yalnızca
-ueklediğinizde dahil edilir. - Stash'ler yereldir ve hiçbir zaman uzak depoya push edilmez.
Örnek
# Save current changes with a message, including untracked files
git stash push -u -m "half-done login form"
# Switch away, fix something else, and come back
git switch hotfix
# ...fix the bug and commit...
git switch feature/login
# See what is stashed, then restore the latest stash
git stash list
git stash popSık sorulan sorular
git stash pop ile git stash apply arasındaki fark nedir?
git stash pop en son stash'i yeniden uygular ve ardından stash listesinden siler. git stash apply ise yeniden uygular ancak listede tutar; bu, aynı değişiklikleri birkaç branch'e uygulamak istediğinizde işe yarar.
git stash izlenmeyen dosyaları da kapsar mı?
Varsayılan olarak hayır. İzlenmeyen dosyaları dahil etmek için git stash -u, yok sayılan dosyaları da dahil etmek için git stash -a kullanın.
Yalnızca bazı dosyaları stash'leyebilir miyim?
Evet. Belirli dosyaları stash'lemek için git stash push <path>, tek tek değişiklikleri etkileşimli olarak seçmek için git stash push -p kullanın.
İlgili sayfalar
- GitSürüm Kontrolü, s. 10Git, dosyalardaki değişiklikleri zamanla izleyen ücretsiz, açık kaynaklı dağıtık sürüm kontrol sistemidir; iş birliğini ve hataları geri almayı kolaylaştırır.
- CommitSürüm Kontrolü, s. 5Commit, Git'te projenin dosyalarının; benzersiz bir kimlik, yazar, zaman damgası ve değişikliği anlatan bir mesajla kaydedilmiş anlık görüntüsüdür.
- BranchSürüm Kontrolü, s. 2Git'te branch, bir özellik ya da düzeltme üzerinde, birleştirene kadar ana kodu etkilemeden çalışmanızı sağlayan bağımsız bir geliştirme hattıdır.
- Merge ConflictSürüm Kontrolü, s. 30Merge çakışması, iki branch bir dosyanın aynı satırlarını değiştirdiği için Git'in otomatik birleştiremediği, sonuca birinin karar vermesi gereken durumdur.
- .gitignoreSürüm Kontrolü, s. 1.gitignore, Git'in izlememesi gereken bağımlılık, derleme çıktısı, günlük ve gizli bilgi gibi dosya ve klasörlerin kalıplarını listeleyen düz metin dosyadır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin