Ana içeriğe atla
Git

Git Stash Açıklaması: Değişiklikleri Kaydetme, Geri Yükleme ve Yönetme

Değişiklikleri kaydetmek, incelemek, geri yüklemek ve yönetmek için git stash kullanımını öğrenin. Seçmeli saklamayı, çakışma düzeltmelerini ve temiz iş akışları için en iyi uygulamaları anlayın.
Allan Ouko's photo
Allan Ouko
Güncel · 9 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Ücretsiz Hesabınızı Oluşturun

Alıştırma and program your progress.

Google Ile Devam Edin
Devam ederek Kullanım Şartlarımızı, Gizlilik Politikamızı ve verilerinizin ABD’de saklandığını kabul etmiş olursunuz.

Veri boru hattınızda yeni bir özelliği hayata geçirirken acil bir hata bildirimi geldi. Çalışma dizininiz yarım kalmış değişikliklerle dolu. Henüz commit atmaya hazır değilsiniz, ancak hemen dal değiştirmek zorundasınız.

Bu eğitimde, tam git stash komut setini nasıl kullanacağınızı göstereceğim. Git'te değişiklikleri nasıl kaydedeceğinizi, inceleyeceğinizi, geri yükleyeceğinizi, seçmeli olarak saklayacağınızı ve birikmiş stash'leri nasıl temizleyeceğinizi öğreneceksiniz. Daha fazla öğrenmek için GitHub Kavramlarına Giriş kursumuzu almanızı öneririm; sürüm kontrolü ve GitHub üzerindeki depolarla çalışma hakkında daha fazla bilgi edinebilirsiniz.

Git stash Nedir?

git stash, onaylanmamış değişikliklerinizi geçici olarak bir kenara kaldıran bir Git komutudur; böylece bir Git commit oluşturmadan temiz bir çalışma dizinine dönebilirsiniz. Bu, dallar arasında geçiş yapmayı veya acil işleri ilerlemenizi kaybetmeden ele almayı kolaylaştırır.

Stash'ler son giren ilk çıkar (LIFO) yığını olarak saklanır. En son stash her zaman stash@{0}'dır, ardından stash@{1} ve bu şekilde devam eder.

Varsayılan olarak, git stash değiştirilmiş izlenen dosyaları ve indeksdeki aşamaya alınmış (staged) değişiklikleri kaydeder. Ancak yeni izlenmeyen dosyalar ile .gitignore içindekiler gibi yok sayılan dosyaları içermez.

git stash ile Değişiklikler Nasıl Kaydedilir

Bu bölümde, değişiklikleri saklamanın üç yaygın yolunu göstereceğim. Tutarlı bir senaryo kullanacağız: data_pipeline.py, config.yaml ve tests/test_pipeline.py dosyalarının bulunduğu bir veri boru hattı projesi üzerinde çalıştığınızı varsayın.

İzlenen değişiklikleri saklayın

git stash değiştirilmiş veya aşamaya alınmış değişiklikleri kaydettiğinden, çalışma dizininizdeki dosyaların durumunu kontrol etmek için git status çalıştırın. git stash komutunu çalıştırdıktan sonra, hem staged hem de staged olmayan izlenen değişiklikler kaydedilir ve sizi temiz bir çalışma diziniyle baş başa bırakır.

İzlenen değişiklikleri saklamak için git stash nasıl kullanılır.

İzlenmeyen değişiklikleri ve yeni dosyaları dahil edin

Varsayılan olarak, git stash depoya hiç eklenmemiş dosyaları yok sayar. Yeni bir test dosyası oluşturduysanız, standart bir stash onu dizininizde bırakır; bu da dallar arasında geçiş yaparken sorunlara yol açabilir.

Çalışma dizininin mevcut durumunu kontrol etmek için git status nasıl kullanılır.

git stash çalıştırırsanız, o dosya kalacaktır. Onu dahil etmek için -u veya --include-untracked komutunu kullanın:

git stash -u

git stash kullanarak izlenmeyen değişiklikleri ve yeni dosyaları nasıl dahil edilir.

.gitignore tarafından açıkça yok sayılanlar da dahil tüm dosyaları dahil etmek için git stash --all veya -a kullanabilirsiniz. Ancak dikkatli olmalısınız; bu, istemeden günlükler veya derleme çıktıları gibi dosyaları da süpürebilir.

Stash'inize ad verin

git stash kullanırken, WIP on main gibi varsayılan iletiler birden fazla stash'iniz varsa kafa karıştırıcı olabilir. Bu sorunu önlemek için, stash'leri göndermek istediğinizde her zaman açıklayıcı bir mesaj ekleyin. 

git stash push -m "refactor pipeline config handling."

Stash listesini görüntülemek ve karşılaştırmak için git stash list komutunu kullanabilirsiniz. Adlandırılmış stash ile varsayılan stash'ler arasındaki farka dikkat edin.

Açıklayıcı mesajlarla bir stash'e nasıl ad verilir.

Açık iletiler kullanmak, özellikle birden çok işle uğraşırken veya bir ekiple çalışırken daha sonra doğru stash'i tanımlamayı çok daha kolay hale getirir.

Sürüm kontrolünü temelden ileri iş akışlarına kadar, değişikliklerin izlenmesi, depoların yönetilmesi ve verimli iş birliği gibi konuları öğrenmek için GitHub Foundations ve Git Fundamentals yetkinlik yollarımızı denemenizi öneririm. 

Stash'lerinizi Nasıl Görüntüler ve İncelersiniz

Bir stash'i körlemesine uygulamadan önce içinde ne olduğunu doğrulamak önemlidir. Bu adım genellikle atlanır, ancak kafa karışıklığını veya yanlışlıkla üzerine yazmayı önlemeye yardımcı olur.

git stash list: Tüm stash'leri listeleyin

Stash yığınızı görmek için aşağıdaki komutu kullanın:

git stash list

git stash list kullanarak tüm stash'ler nasıl listelenir.

Artık stash'lerin LIFO (son giren ilk çıkar) sırasını izlediğini biliyor olmalısınız. En güncel stash her zaman stash@{0}'dır ve her yeni stash eskileri yığının daha aşağısına iter.

git stash show: Uygulamadan önce bir stash'i inceleyin

Bir stash'teki değişikliklerin hızlı bir özetini almak için belirli bir stash üzerinde show komutunu kullanabilirsiniz. Örneğin, aşağıdaki komut en son stash'te yapılan değişiklikleri gösterir:

git stash show stash@{0}

Değişiklikleri uygulamadan önce bir stash'i nasıl incelersiniz.

Gerçek kod değişikliklerini (tam diff) görmek için, o stash'te saklanan satır satır tüm değişiklikleri göstermek üzere aşağıdaki komutu kullanın.

git stash show -p stash@{0}

Değişiklikleri uygulamadan önce bir stash'in gerçek kod değişiklikleri nasıl incelenir.

En iyi uygulama olarak, özellikle birkaç günlükse veya içinde ne olduğundan emin değilseniz, bir stash'i uygulamadan önce her zaman inceleyin.

Saklanan Değişiklikler Nasıl Geri Yüklenir

Çalışmanızı git stash ile kaydettikten sonra onu geri getirmek için bir yola ihtiyacınız olacak. İkisi de belirli bir stash'i indeksine göre hedeflemeyi içeren iki ana geri yükleme yöntemi vardır.

git stash pop: uygula ve kaldır

Bu, bir stash'i geri yüklemenin en yaygın yoludur. En üstteki stash'i (stash@{0}) alır, değişiklikleri mevcut dalınıza uygular ve ardından bu stash'i yığından siler.

git stash pop

git stash pop kullanarak bir stash'i nasıl geri yükler ve düşürürsünüz.

pop komutunu çalıştırdıktan sonra değişiklikleriniz geri yüklenir ve stash kaldırılır. Bu nedenle, o kaydedilmiş durumla işinizin bittiğinden emin olduğunuzda ve stash listenizi düzenli tutmak istediğinizde pop kullanın.

pop komutunu daha derinlemesine anlamak için, depodaki dalları değiştirirken onaylanmamış çalışmaları nasıl kaydedeceğinizi öğrenmek üzere Git Stash Pop eğitimimize göz atmanızı öneririm.

git stash apply: uygula ve sakla

Değişiklikleri geri yüklemek, ancak stash'i yeniden kullanmak üzere saklamak istiyorsanız, aşağıdaki gibi apply komutunu kullanın:

git stash apply stash@{1}

git stash apply kullanarak bir stash'i nasıl geri yükler ve saklarsınız.

Bir stash'i stash@{1} indeksiyle referans göstermek, geri yükleme için belirli stash'i hedefler. Bu yöntem, aynı değişiklikleri birden fazla dala uygulamak istediğinizde yararlıdır; örneğin hem main hem de staging dallarına gitmesi gereken paylaşılan bir yapılandırma ayarı gibi.

apply komutunu kullandıktan sonra stash'in hâlâ orada olup olmadığını doğrulamak için git stash list kullanabilirsiniz.

git stash list kullanarak tüm stash'ler nasıl gösterilir.

Seçmeli Olarak Nasıl Stash Yapılır

Gerçek dünya projelerinde değişiklikleriniz sıklıkla birbirine karışır. Böyle durumlarda, yalnızca işinizin bir kısmını saklamak, geri kalanını ise erişilebilir tutmak isteyebilirsiniz. Git, ince ayarlı kontrol için iki yöntem sunar.

git stash push -m: Belirli dosyaları saklayın

Hangi dosyaların rafa kaldırılması gerektiğini tam olarak biliyorsanız, yollarını belirterek yalnızca seçili dosyaları saklayabilirsiniz:

Örneğin, aşağıdaki komut yalnızca data_pipeline.py dosyasını saklar. Bu, bir hata düzeltmesini aşamaya alınmış ve commit'e hazır tutarken, deneysellik içeren bir çalışmayı duraklatmak istediğinizde kullanışlıdır.

git stash push -m "stash experimental pipeline logic" data_pipeline.py

Komutunuzun başarıyla yürütülüp yürütülmediğini kontrol etmek için, deponuzun önceki ve sonraki hâlini göstermek üzere git status kullanın.

Git kullanarak belirli dosyalar nasıl saklanır.

git stash push -p -m: Belirli parçalara (hunk) etkileşimli olarak stash yapın

Bazen aynı dosyada “iyi” kod ve “WIP” kod bulunabilir. Bu durumda, etkileşimli bir oturum başlatmak için -p veya --patch bayrağını kullanın. Bu, bir dosya içindeki belirli değişiklik parçalarını (“hunk”) seçmenizi sağlar.

git stash push -p -m "Selective stash of pipeline logic"

Belirli hunk'lar etkileşimli olarak nasıl saklanır.

“Bu hunk'ı sakla” çıktısını aşağıdaki seçeneklerle göreceksiniz:

  • y: Evet, bu hunk'ı sakla

  • n: Hayır, bu hunk'ı atla

  • q: Çık; bu hunk'ı veya kalanları saklama.

  • a: Tümü; bu hunk'ı ve dosyadaki sonraki tüm hunk'ları sakla.

  • d: Sil; bu hunk'ı veya dosyadaki sonraki hunk'ları saklama.

  • ?: yardım

Bu iş akışının git add -p ile çok benzer olduğunu not etmelisiniz. Aynı dosya içindeki değişiklikler ilişkisiz olduğunda ve ayrı ayrı ele alınması gerektiğinde kullanışlıdır.

Stash'inizi Nasıl Temizlersiniz

Stash'ler kısa ömürlü olmak üzere tasarlanmıştır. Birikmelerine izin verirseniz, daha sonra doğru olanı bulmak zorlaşır ve nihayet uyguladığınızda çakışma riskini artırır.

git stash drop: Belirli bir stash'i düşürün

Tek bir stash'i kaldırmak için indeksini belirterek git stash drop kullanın. Örneğin, aşağıdaki komut listedeki 4. stash'i düşürür.

git stash drop stash@{3}

İndeksini kullanarak belirli bir stash nasıl düşürülür.

Yukarıdaki örnekte, listenin küçüldüğünü ve düşürme işleminden sonra kalan stash'lerin yeniden indekslendiğini görebilirsiniz.

git stash clear: Tüm stash'leri temizleyin

Tüm stash'leri bir kerede kaldırmak için şunu kullanın:

git stash clear

Bu komut başarıyla çalıştığında çıktı üretmez; git stash list çalıştırarak doğrulayabilirsiniz.

git stash clear kullanarak tüm stash'leri nasıl temizlersiniz.

git stash clear kullanırken ekstra dikkatli olmanızı öneririm; bu işlem kalıcıdır ve yerleşik bir geri alma yoktur. Yalnızca saklanan hiçbir çalışmaya artık ihtiyacınız olmadığından emin olduğunuzda çalıştırın.

git stash branch: Bir stash'i dala dönüştürün

Mevcut dalınız, stash'i oluşturduğunuzdan bu yana önemli ölçüde ayrıştıysa, onu uygulamak birleştirme çakışmalarına yol açabilir. Bu durumda, doğrudan stash'ten yeni bir dal oluşturabilirsiniz:

git stash branch pipeline-fix stash@{1}

git stash branch kullanarak bir stash'i dala nasıl dönüştürürsünüz.

Yukarıdaki komut şunları yapar:

  • Stash'in yapıldığı orijinal commit'ten yeni bir dal oluşturur
  • Stash'i uygular
  • Onu stash listesinden kaldırır

Daha iyi geliştirme ve iş birliği için dalları yönetme hakkında daha fazla bilgi edinmek üzere Git Branch eğitimimize göz atmanızı öneririm.

Bilinmeye Değer Diğer Git Stash Komutları

Yaygın iş akışlarının ötesinde, aşağıdakiler farkında olmanız gereken bazı gelişmiş git stash komutlarıdır:

  • git stash create: Stash listesine eklemeden bir stash nesnesi oluşturur

  • git stash store: create ile oluşturulmuş bir stash'i depolar

  • git stash export: Bir stash'i bir referansa aktarır veya yazdırır

  • git stash import: Mevcut bir commit'ten bir stash içe aktarır

Yaygın Hatalar ve Nasıl Düzeltilir

git stash basit olmasına rağmen, birkaç yaygın sorun sizi tökezletebilir. Karşılaştığım hatalardan bazıları ve bunları nasıl hızlıca tanıyıp düzelteceğiniz burada.

Kaydedilecek yerel değişiklik yok

Bu, en sık görülen “hata olmayan” hatadır. git stash komutunu, izlenen dosyalarda değiştirilmiş veya aşamaya alınmış bir şeyin olmadığı temiz bir çalışma dizininde çalıştırdığınızda oluşur.

Bu sorunu düzeltmek için git status çalıştırın; bir şey görünmüyorsa saklanacak bir şey yoktur.

git stash'te "Kaydedilecek yerel değişiklik yok" nasıl çözülür.

Bir stash'i uygularken çakışma

Çakışmalar, bulunduğunuz dalın, stash'inizdeki kodun aynı satırlarını değiştirmiş olması durumunda meydana gelir. Örneğin, dosyayı değiştirdikten sonra yeni dalda git stash pop çalıştırdığınızda, muhtemelen bir hata mesajı alırsınız:

Bir stash'i uygularken birleştirme çakışması.

Ardından dosya içinde çakışma işaretçilerini görebilirsiniz:

İzlenmeyen dosyada çakışma işaretçileri.

Bu sorunu düzeltmek için aşağıdakilerden herhangi birini yapabilirsiniz:

  • Çakışmaları dosyada elle çözün
  • Çözülen dosyaları aşamaya alın
git add data_pipeline.py
  • Çakışmada otomatik olarak kaldırılmıyorsa git stash drop kullanarak stash'i elle düşürün

Çakışmalar çok karmaşıksa, bunun yerine değişiklikleri temiz bir zemine uygulamak için aşağıdaki komutu kullanın.

git stash branch recovery-branch stash@{0}

İstemeden dosyaları saklamak

Bazen çalışma dizininizi kontrol etmeden git stash çalıştırabilir ve daha sonra aslında commit etmek istediğiniz bir düzeltmeyi gömdüğünüzü fark edebilirsiniz.

Böyle hatalardan kaçınmak için, saklanacak dosyaları her zaman açıkça belirtin. Örneğin, aşağıdaki komut çalışma dizinindeki her şey yerine yalnızca data_pipeline.py dosyasını saklayacaktır.

git stash push data_pipeline.py

Ayrıca, tüm dosyaları değil, dosyalar içindeki değişikliklerin belirli kısımlarını seçerek saklamanıza olanak tanıyan etkileşimli (patch) modu çalıştırmak için git stash -p kullanabilirsiniz.

Önleyici bir önlem olarak, stash yapmadan önce her zaman git status kontrol edin.

Sonuç

Genel bir kural olarak, stash'leri kısa ömürlü tutun ve her zaman açıklayıcı iletiler kullanın. Çalışmaya bir gün içinde dönmeyecekseniz, bir WIP dalı oluşturmak daha güvenlidir; çünkü uzak depoya itilebilir ve kaybolmaz.

Daha güçlü Git becerileri geliştirmek için Orta Seviye Git kursumuzu almanızı öneririm; Git'te iş birliğini öğrenin. Ayrıca, büyük projelerde Git ile çalışma ve veri boru hattı geliştirmede karmaşık sürüm kontrol senaryoları ve sorunlarını ele alma konularını öğrenmek için İleri Seviye Git kursumuzu da öneririm.


Allan Ouko's photo
Author
Allan Ouko
LinkedIn
Veri analitiği, iş zekâsı ve veri bilimi alanlarında pratik deneyime sahip Veri Bilimi Teknik Yazarı. SQL, Python, Power BI, Databricks ve veri mühendisliği üzerine, gerçek dünya analitik çalışmalarına dayanan, uygulamaya dönük ve sektöre odaklı içerikler yazıyorum. Yazılarım teknik derinlikle iş etkisi arasındaki köprüyü kurarak profesyonellerin veriyi güvenle karara dönüştürmelerine yardımcı olur.

Git Stash SSS

git stash izlenmeyen dosyaları kaydeder mi?

Hayır, varsayılan olarak, git stash yalnızca izlenen dosyaları kaydeder. İzlenmeyen dosyaları dahil etmek için git stash -u kullanın.

git stash commit geçmişimi etkiler mi?

Hayır, stash'ler commit geçmişinizden ayrıdır ve dal günlüklerinizde görünmez.

git stash pop ile git stash apply arasındaki fark nedir?

git stash pop stash'i uygular ve kaldırır; git stash apply ise stash'i uygular ancak stash listesinde tutar.

Git neden “Kaydedilecek yerel değişiklik yok” diyor?

Bu sorun, çalışma dizininiz temiz olduğunda; stash'lenecek değiştirilmiş veya aşamaya alınmış izlenen dosya bulunmadığında ortaya çıkar.

Bir stash'i geri yüklerken çakışmalara ne sebep olur?

Çakışmalar, hem mevcut dalınızda hem de stash'lenmiş değişikliklerde dosyaların aynı bölümlerinin değiştirilmiş olması durumunda meydana gelir.

Konular
Git

DataCamp ile Git Öğrenin

Kurs

Orta Düzey Git

2 sa
44K
Git kullanarak işbirliğine dayalı yazılım ve veri projelerinde sürüm kontrolü için dalları ve uzak depoları keşfedin!
Ayrıntıları GörüntüleKursa Başla

Ücretsiz Hesabınızı Oluşturun

Alıştırma and program your progress.

Google Ile Devam Edin
Devam ederek Kullanım Şartlarımızı, Gizlilik Politikamızı ve verilerinizin ABD’de saklandığını kabul etmiş olursunuz.
Devamını Gör
İlgili

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Devamını Gör