Berk Akademi
Birebir ders başvurusu Ücretsiz ön görüşme Ana Sayfa

git stash pop Komutu Nedir, Nasıl Kullanılır?

git-stash-pop-komutu-nedir-nasil-kullanilir
Bu yazıda neler var?
  1. git stash pop komutu nedir ve ne yapar?
  2. Geçici değişiklikleri saklayıp geri almak ne zaman işe yarar?
  3. git stash pop sözdizimi ve temel kullanım seçenekleri
  4. git stash pop ile git stash apply arasındaki fark nedir?
  5. Çakışma olduğunda git stash pop nasıl çözülür?
  6. Yaygın hatalar ve güvenli kontrol adımları
  7. Sık Sorulan Sorular

git stash pop, daha önce geçici olarak saklanan yerel değişiklikleri mevcut dalın çalışma ağacına yeniden uygulamayı dener. Uygulama başarılı olursa ilgili stash kaydı listeden çıkarılır; çakışma oluşursa kayıt korunur ve çözüm sonrasında ne yapılacağına sen karar verirsin.

Komutun temel kullanım mantığı şudur: Henüz commit etmeye hazır olmayan çalışmayı geçici olarak sakla, başka dalda gerekli işlemi yap, ilk dala dön ve değişiklikleri geri uygula. Bu işlem Git CLI içinde çalışma durumunu kısa süreliğine taşımak için kullanılır.

git stash pop komutu nedir ve ne yapar?

Git stash, çalışma ağacındaki ve indeksindeki yerel değişiklikleri geçici bir kayıt olarak saklamaya yarar. git stash pop ise seçilen stash kaydındaki değişiklikleri, komutu çalıştırdığın anda üzerinde bulunduğun dalın mevcut çalışma ağacına uygulamayı dener. Komut kendi başına dal değiştirmez ve yeni bir commit oluşturmaz.

pop davranışı, değişiklikleri uygulama ile stash kaydını listeden kaldırma işlemlerinin birlikte düşünülmesidir. Uygulama sorunsuz tamamlanırsa kayıt stash listesinden düşürülür. Uygulama çakışmayla sonuçlanırsa kayıt otomatik olarak silinmez. Böylece çakışmayı çözerken ilgili değişiklik kaydını koruyabilirsin. Bu davranış, Git stash belgelerinde de açıklandığı gibi, başarısız bir geri yüklemede stash kaydının korunmasını sağlar.

Belirli bir stash kaydını uygulamak için temel kullanım şu şekildedir:

git stash pop stash@{0}

Bu komutta stash@{0}, uygulanacak kaydı belirtir. Beklenen sonuç, stash içindeki değişikliklerin mevcut dalda yeniden görünmesidir. İşlem temiz tamamlanırsa kayıt listeden çıkarılır; Git bir çakışma bildirirse kayıt listede kalır ve dosyalardaki durum ayrıca incelenir.

Geçici değişiklikleri saklayıp geri almak ne zaman işe yarar?

Geçici değişiklikleri saklayıp geri almak ne zaman işe yarar?

Bir özellik üzerinde çalışırken değişikliklerin henüz anlamlı bir commit oluşturacak kadar tamamlanmamış olabilir. Buna rağmen başka bir dala geçmen, oradaki bir düzeltmeyi incelemen veya farklı bir işi kısa süreliğine ele alman gerekebilir. Böyle bir durumda önce git status ile hangi dosyaların değiştiğini kontrol edip ardından git stash push ile mevcut durumu geçici olarak saklayabilirsin.

Genel sıra şöyledir: Çalışma durumunu kontrol et, değişiklikleri stash ile sakla, diğer dala geç, gerekli işlemi tamamla, ilk dala geri dön ve uygun kaydı git stash pop ile uygula. Bu yöntem, henüz commit etmeye hazır olmayan yerel değişiklikleri dal değişimi sırasında taşımak için uygundur.

git stash push sonrasında çalışma dizininin temiz görünmesi beklenen bir durumdur. Bu temizlik, değişikliklerin silindiği anlamına gelmez; değişiklikler stash kaydında tutulur. Bu nedenle temiz çalışma dizini, tek başına git stash pop için hata değildir. Ancak geri döndüğün dalın dosya durumu stash oluşturulduğu andan farklılaşmışsa uygulama sırasında çakışma oluşma ihtimalini ayrıca değerlendirmelisin.

git stash pop sözdizimi ve temel kullanım seçenekleri

git stash pop için temel sözdizimi şöyledir: git stash pop [--index] [-q | --quiet] [<stash>]. İsteğe bağlı <stash> bölümü verilmezse Git en yeni stash kaydını, yani stash@{0} kaydını hedefler. Belirli bir kaydı geri getirmek için stash@{1} gibi bir başvuru kullanabilirsin.

Hangi kaydı uygulayacağını seçmeden önce git stash list ile kayıtları görüntüleyebilirsin. Ardından değişiklik özetini incelemek için git stash show --stat stash@{0} komutunu çalıştırabilirsin. --index, çalışma ağacındaki değişikliklere ek olarak stash içinde saklanan index, yani stage edilmiş durumu da geri yüklemeyi dener. --quiet veya kısa biçimi -q, bilgilendirme çıktısını azaltır. Çalışma dizininin temiz olması, git stash pop için tek başına hata değildir. Uygulanabilir bir stash kaydı varsa Git onu mevcut çalışma ağacına uygulamayı dener.

Aşağıdaki örnek Git Bash, macOS veya Linux terminalinde yeni bir depo oluşturur, bir dosyayı commit eder, değişikliği stash içine alır ve farklı bir dala geçip geri döndükten sonra git stash pop ile değişikliği yeniden getirir:

$ mkdir git-stash-pop-demo
$ cd git-stash-pop-demo
$ git init -q
$ git branch -M main
$ git config user.name "Git Öğrencisi"
$ git config user.email "[email protected]"
$ printf "Başlangıç notun" > notes.txt
$ git add notes.txt
$ git commit -qm "ilk not"
$ printf "İkinci satırn" >> notes.txt
$ git stash push -m "not taslağı"
Saved working directory and index state On main: not taslağı
$ git stash list
stash@{0}: On main: not taslağı
$ git switch -c demo-branch
Switched to a new branch 'demo-branch'
$ git switch main
Switched to branch 'main'
$ git stash pop
On branch main
...
Dropped refs/stash@{0} (...)
$ git status --short
 M notes.txt
$ cat notes.txt
Başlangıç notu
İkinci satır

Çıktıdaki dal adı, commit özeti ve ayrıntılı durum satırları ortama göre değişebilir. Önemli sonuç, değişikliğin stash'ten geri gelmesi, git status --short çıktısında M notes.txt durumunun görünmesi ve başarılı uygulamadan sonra stash@{0} kaydının kaldırılmasıdır.

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

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

git stash pop ve git stash apply aynı stash değişikliklerini mevcut çalışma ağacına uygulamayı dener. Temel fark, başarılı uygulamadan sonra stash kaydının listede tutulup tutulmamasıdır. pop başarılı olursa kayıt kaldırılır. Çakışma nedeniyle uygulama tamamlanamazsa kayıt listede kalabilir. apply ise uygulama başarılı olsa da stash kaydını korur.

Ölçüt git stash pop git stash apply
Değişiklikleri uygulama Stash değişikliklerini mevcut çalışma ağacına uygular. Stash değişikliklerini mevcut çalışma ağacına uygular.
Başarılı uygulama sonrasında stash listesindeki durum Kayıt listeden kaldırılır. Kayıt listede korunur.
Yeniden deneme imkânı Başarılı uygulamadan sonra aynı kayıt doğrudan yeniden kullanılamaz. Aynı kayıt daha sonra yeniden uygulanabilir.
Çakışma sonrası davranış Çakışma nedeniyle uygulama tamamlanamazsa kayıt listede kalabilir. Kayıt zaten korunduğu için yeniden deneme imkânı devam eder.
Hangi durumda tercih edileceği Tek seferlik ve başarılı bir geri alma sonrasında tercih edilebilir. Sonucu önce denemek veya aynı stash kaydını tekrar kullanmak gerektiğinde daha uygundur.

Sonucu önce denemek, aynı kaydı başka bir dalda yeniden kullanmak veya çözüm öncesi geri dönüş payı bırakmak istediğinde apply daha kontrollü bir seçimdir. Stash kaydının başarılı ve tek seferlik bir geri alma sonrasında listeden kaldırılmasını istiyorsan pop kullanabilirsin. Çakışmalı bir pop sonrasında kayıt korunabileceği için, çözüm tamamlanmadan stash'i ayrıca kaldırmamak gerekir.

Çakışma olduğunda git stash pop nasıl çözülür?

git stash pop komutu, stash kaydındaki değişiklikleri mevcut çalışma ağacına uygular ve işlem başarılı olduğunda kaydı listeden kaldırır. Aynı satırlar hem mevcut dalda hem de stash kaydında değişmişse Git bunları otomatik olarak birleştiremeyebilir. Bu durumda stash kaydı korunur ve çakışmayı elle çözmen gerekir.

Terminalde aşağıdakine benzer bir çıktı görebilirsin:

$ git stash pop stash@{0}
Auto-merging notes.txt
CONFLICT (content): Merge conflict in notes.txt
On branch feature/notlar
...
The stash entry is kept in case you need it again.

Bu çıktı, notes.txt dosyasının birleştirilemediğini ve stash kaydının silinmediğini gösterir. Çözüm tamamlanmadan aynı kayıt için git stash pop komutunu tekrar çalıştırma.

  1. Durumu belirle: git status çalıştır ve unmerged paths olarak listelenen dosyaları belirle.
  2. Dosyayı düzenle: Çakışan dosyayı aç. <<<<<<<, ======= ve >>>>>>> işaretleri arasındaki içerikleri karşılaştır. Doğru satırları seç veya iki tarafı bilinçli biçimde birleştir. Ardından tüm çakışma işaretlerini dosyadan kaldır.
  3. Çözümü işaretle: Düzenlediğin dosyayı git add notes.txt komutuyla stage alanına al. Birden fazla dosya varsa her dosya için işlemi tekrarla.
  4. Sonucu incele: git diff --cached komutuyla bir sonraki commit'e girecek içeriği gözden geçir. Hatalı bir satır varsa dosyayı yeniden düzenleyip tekrar git add çalıştır.
  5. Kontrolleri yap: Gerekli testleri, uygulama çalıştırmalarını veya ilgili manuel kontrolleri gerçekleştir. Sonra git status çıktısında hâlâ birleştirilmemiş dosya kalmadığını kontrol et.
  6. Stash durumunu doğrula: git stash list ile orijinal kaydın hâlâ listede olduğunu gör. Değişiklikler güvenle korunduktan ve gerekiyorsa commit edildikten sonra artık ihtiyaç duyulmayan kaydı git stash drop stash@{n} ile kaldırabilirsin.

Dosyayı düzenledikten sonra temel komut akışı şöyle olabilir:

git status
git add notes.txt
git diff --cached
git status
git stash list

Beklenen sonuç, dosyanın çakışma işaretlerinden arındırılması, çözümün stage alanında görünmesi ve stash kaydının silinip silinmeyeceğine bilinçli biçimde karar verilmesidir.

Yaygın hatalar ve güvenli kontrol adımları

Stash listesi boşken pop çalıştırmak

git stash list hiçbir kayıt göstermiyorsa argümansız git stash pop uygulayacağı bir stash bulamaz ve işlem tamamlanmaz. Önce gerçekten kullanılabilir bir stash kaydı olup olmadığını kontrol et.

Yanlış stash indeksini seçmek

stash@{0} listedeki en üst kaydı, stash@{1} ise sonraki kaydı ifade eder. Yeni bir stash oluşturmak veya bir kaydı drop etmek indekslerin değişmesine neden olabilir. Bu nedenle önce git stash list, ardından gerekirse git stash show --stat stash@{n} çalıştırarak içeriği doğrula.

Mevcut yerel değişiklikleri hesaba katmamak

Hedef çalışma dizininde korunmamış değişiklikler varken stash uygulamak, aynı dosyalarda çakışmaya veya Git'in mevcut içeriğin üzerine yazmamak için işlemi durdurmasına yol açabilir. Önce git status ile durumu gör. Gerekli değişiklikleri commit ederek veya ayrı bir stash oluşturarak korumadan git reset --hard ya da git clean gibi yıkıcı temizleme komutlarına başvurma.

Temiz çalışma dizinini hata sanmak

Çalışma dizininin temiz olması tek başına hata değildir. git stash list içinde bir kayıt varsa temiz çalışma dizini, git stash pop için uygun bir başlangıç olabilir. Karar vermeden önce git status, git stash list ve gerektiğinde git stash show --stat stash@{n} çıktısını birlikte incele.

Sık Sorulan Sorular

Çalışma dizini temizken git stash pop çalıştırılabilir mi?

Evet. Temiz çalışma dizini tek başına hata değildir. git stash list bir kayıt gösteriyorsa git stash pop bu kaydı mevcut dala uygulayabilir.

git stash pop çakışma çıkarırsa stash kaydı silinir mi?

Hayır. Çakışma nedeniyle uygulama tamamlanamazsa stash kaydı listeden çıkarılmaz. Çakışmaları çözüp kontrolleri yaptıktan sonra kayda ihtiyacın kalmadıysa git stash drop ile manuel olarak kaldırabilirsin.

git stash pop ile belirli bir stash kaydı nasıl seçilir?

Önce git stash list ile kayıtları gör, ardından seçtiğin indeksi komuta ekle: git stash pop stash@{2}. İndeksi işlemden hemen önce yeniden kontrol et.

git stash apply ne zaman git stash pop yerine tercih edilir?

Stash kaydını koruyarak uygulamayı denemek istediğinde git stash apply daha uygundur. Örneğin çakışma ihtimali varsa veya aynı değişiklikleri daha sonra yeniden kullanacaksan git stash apply stash@{1} çalıştırabilirsin. Başarılı uygulamadan sonra kayıt listede kalır.

Çakışma durumunda önce mevcut durumu görmek, sonra dosyaları bilinçli biçimde düzenlemek ve stash kaydını yeniden doğrulamak güvenli bir çalışma düzeni sağlar.

Bu içerik aradığın cevabı verdi mi?
Yanıtın, hangi yazıları geliştirmemiz gerektiğini anlamamıza yardımcı olur.
Bu içeriğin üretilmesinde yapay zeka araçlarından destek alınmıştır.

Bu konudan sonra ne okuyabilirsin?

Tüm yazılar

İlgili Eğitimler

Berk Keskin, yazılım geliştirici ve eğitmen
Yazar

Berk Keskin Kimdir?

Yazılıma 12 yaşında başladı; İzmir Ekonomi Üniversitesi'ni bölüm birincisi ve yüksek şeref öğrencisi olarak tamamladı. Bugün yalnızca eğitim vermekle kalmıyor, sektörde aktif olarak yazılım projeleri geliştiriyor ve gerçek dünya deneyimini birebir derslerine taşıyor. Ezberden uzak, mühendislik zihniyetini merkeze alan sürdürülebilir öğrenme sistemleri tasarlayarak sorgulayan, üreten ve problem çözebilen yeni nesil yazılımcılar yetiştiriyor.

Sektörel Deneyim & Projeler

  • Ticarify Entegrasyon Yazılım logosu CEO Ticarify Entegrasyon YazılımPazaryerleri ve e-ticaret sitelerine otomatik e-fatura kesimi, sipariş ve kargo takibi hizmetleri sunan e-Dönüşüm platformunun API mimarisini ve yazılım ekibini yönetmektedir.
  • Benim Düğünüm logosu CEO Benim DüğünümDijital etkinlik ve anı paylaşım platformu.
  • Siberdizayn logosu Yazılım Ekibi Lideri SiberdizaynYüksek anlık oyuncu trafiğine sahip oyun kontrol panelleri ve sunucu altyapıları geliştiren yazılım ekibine liderlik etmektedir.
  • MEDYOGRAFYA 360° Dijital Çözümler logosu Dijital Strateji Lideri MEDYOGRAFYA 360° Dijital ÇözümlerŞirketlerin dijital çözümlerde uzun vadede nasıl ilerlemesi gerektiği ve dijital dönüşüm süreçlerinin yönetilmesine destek olmaktadır.
  • İzmir Ekonomi Üniversitesi logosu Danışma Kurulu Üyesi İzmir Ekonomi ÜniversitesiMezun olduğu üniversitesinde, Bilgisayar Programcılığı bölümünün akademik müfredatını güncel sektör ihtiyaçlarına göre şekillendirmek adına Danışma Kurulu'nda görev almaktadır.
WhatsApp Hemen Ara