Git Stash Kullanımı: Taahhüt Edilmemiş Değişiklikleri Kaydetme ve Geri Yükleme

Git stash, henüz commit edilmemiş yerel değişiklikleri geçici olarak kaydetmenize olanak tanır. Bu, bir hata düzeltmesi yapmak veya başka bir dala geçmek gerektiğinde, çalışmalarınızı bozmadan çalışma dizininizi temizlemenizi sağlar.

L
Linuxize
13 görüntülenme
Git Stash Kullanımı: Taahhüt Edilmemiş Değişiklikleri Kaydetme ve Geri Yükleme

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 stash hem 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:

  1. git stash pop: En yeni yığını uygular ve yığın listesinden hemen kaldırır. Tek seferlik geri yüklemeler için idealdir.
  2. 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 .gitignore tarafı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.

Kaynak

Linuxize