1.8.3'te Stash Pop'a Özel Stash Nasıl Gidilir?


290

Git'i yeni güncelledim. Git 1.8.3 sürümündeyim.

Bu sabah, yığının derinliklerindeki bir değişikliği 1'den kaldırmaya çalıştım.

Koştum git stash pop stash@{1}ve bu hatayı aldım.

fatal: belirsiz argüman 'stash @ 1': bilinmeyen düzeltme veya çalışma ağacında olmayan yol. Yolları revizyonlardan ayırmak için '-' kullanın, şöyle: 'git [...] - [...]'

Ben bu konuda yaklaşık 20 + varyasyonları denedim yanı sıra başarı ile applyyerine kullanarak pop. Ne değişti? Başka kimse bununla karşılaşır mı?


2
{} 'Lardan kaçmayı denediniz mi?
AlexDev

20
Git 2.11 (4. Çeyrek 2016) ile artık kullanabilirsiniz git stash pop 1: aşağıdaki cevabımı görün
VonC

Yanıtlar:


360
git stash apply n

git sürüm 2.11 itibariyle çalışır

Orijinal cevap, muhtemelen kabuk kaçışlarını içeren eski sözdizimi ile ilgili sorunların hatalarını gidermeye yardımcı olur:

Daha önce de belirtildiği gibi, kıvırcık parantez OS, kabuğunuz vb. Bağlı olarak kaçmayı veya alıntı yapmayı gerektirebilir.

Neyin yanlış gidebileceği ve çeşitli mermiler ve platformlarda nasıl çalışılacağı hakkında ayrıntılı ipuçları için " stash @ {1} belirsiz mi? "

git stash list
git stash apply stash@{n}

git stash sürüm uygula


15
Bu cevabı olan tek nitim, sorunun popbelirli bir zulası nasıl istediğini sorması ve bu komutun applyhaşhaştan ziyade zulası s olmasıdır. Fark, bir pop'un hem stash'ı koda uygulaması hem de stash'ın kendisini silmesidir.
Grant Humphries

Benim için çalışmıyor. "Bilinmeyen seçenek: -encodedCommand" hatası alıyorum
Yuvraj Patil


Lütfen cevabınızı şimdi güncelleyingit stash apply n
Hafiz Temuri

179

Parantezlerden kaçmanız gerekiyor:

git stash pop stash@\{1\}

78

Sözdizimi için alıntılarla uğraşmak zorunda olmadığınızdan emin olmak istiyorsanız stash@{x}Git 2.11 (Q4 2016) kullanın

Bkz. A56c8f5 (24 Ekim 2016), Aaron M Watson ( watsona4) .
(Göre Birleştirilmiş - Junio Cı Hamano gitster- içinde 9fa1f90 tamamlama 2016, 31 Eyl)

stash: stash'lara yalnızca dizinle başvurulmasına izin ver

" stash@{n}" Açıkça referans vermek yerine, " " olarak referans vermeyi mümkün kılın n.
Çoğu kullanıcı, stash yığınlarına yalnızca stash yığınındaki konumlarına göre referans verir (burada "dizin" olarak adlandırdığım).

Tipik stash ( stash@{n}) sözdizimi biraz sinir bozucu ve unutulması kolaydır ve bazen bir komut dosyasında düzgün bir şekilde kaçmak zordur .

Bu nedenle, sadece indekse başvurarak saklamakla bir şeyler yapabilmek arzu edilir.

Yani:

git stash drop 1
git stash pop 1
git stash apply 1
git stash show 1

5
Teşekkürler! Bu muhtemelen 2019'da buraya gelen herkes için en alakalı cevaptır.
Aaron Frary


16

Robert'in işaret ettiği gibi, tırnak işaretleri sizin için hile yapabilir:

git stash pop stash@"{1}"

12

Yukarıdakilerin hiçbiri işe yaramazsa, saklamanın etrafındaki tırnak işaretleri sizin için işe yarayabilir:

git stash pop "stash@{0}"

4

Yüklü 2.22 ve bu çalıştı ..

git stash pop --index 1

Çalışmıyor .. $ git stash pop --index 1 ölümcül: belirsiz argüman '1': bilinmeyen düzeltme veya çalışma ağacında yol yok. Yolları revizyonlardan ayırmak için '-' kullanın, 'git <command> [<revision> ...] - [<file> ...]'
Dave Doga Oz

2

Sürüm 2.11+ aşağıdakileri kullanır:

git stash list

git stash apply n

n, {12} numaralı stash sayısıdır


1

Önce listeyi kontrol edin: -

git stash list

doldurmak istediğiniz dizini saklamak listesinden kopyalayın

git stash pop stash@{index_number}

Örneğin.:

git stash pop stash@{1}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.