stash @ {1} belirsiz mi?


122

Zulam hakkında bilgi almaya çalışıyorum ama git bana bunu söylüyor stash@{0}ve stash@{1}belirsiz. git stash listiyi çalışıyor ve.git/logs/refs/stash uygun içeriğe sahip gibi görünüyor (git internals konusunda uzman olduğumdan değil).

% git stash list
stash@{0}: On master: two
stash@{1}: On master: one
% git stash show stash@{1}
fatal: ambiguous argument 'stash@1': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions

Sadece düz iyi git stash showçalışıyor. Öyleyse neden git stash listbana belirsizlik veren isimler ?


1
Benim durumumda, bir şekilde stashhataya neden olan adlı bir şube ile sonuçlandım .
Zaz

Ve benim durumumda stash, hataya neden olan bir uzaktan kumandam vardı !
Robert Muil

Yanıtlar:


231

Kabuğunuz kıvrımlı parantezlerinizi yiyor, bu yüzden siz derken stash@{1}, git görüyor stash@1ve bu hiç mantıklı değil. Bağımsız değişkeni alıntılayın (kullanın git stash apply "stash@{1}"veya git stash apply stash@"{1}"; her iki şekilde de alıntı yapmak işe yarar ) veya kabuğunuzu yalnızca aralarında virgül olduğunda küme parantezlerini genişletecek şekilde yeniden yapılandırın (zsh her iki şekilde de yapılandırılabilir, bash yalnızca virgülle veya aralarında aralıkla küme parantezlerini genişletir, diğer kabuklar şu veya bu şekilde davranabilir).


1
@sehe: Şu anda Uncommon'ın kullandığı. Alıntılanan hata mesajı bunu oldukça açık bir şekilde göstermektedir (hayır, bash olamaz gibi görünüyor).
Jan Hudec

83
Windows'ta, PowerShell de parantez yer. Onlardan bir backtick ile kaçabilirsiniz(git stash drop stash@`{1`})
Xavier Poinas

8
Teşekkürler bu Fish ile olur, ne olduğundan emin değildim.
Elijah Lynn

3
@Sergey, PowerShell için stash @ `{0`} (ters işaretler) veya 'stash @ {0}' (tek tırnak) kullanın.
Hans

4
Aman Tanrım, bir yıldan fazla bir süre sonra ve bir sorun yaşadığım için buna tekrar döndüm. Sadece bunu ne kadar nadir kullandığımı gösteriyor. Sonra kesinlikle yukarıda bir yorum bıraktığımı görmek, Fish ile olur diyor. Çok komik.
Elijah Lynn

23

Merhabalar, aynı şey bana da oldu. Düzeltmenin en kolay yolu şuydu:

$ git stash apply stash@"{2}"

Windows git kabuğu kullanıyorum.


2
Ayrıcagit stash apply "stash@{2}"
rsenna


aynı git stash apply "stash @ {2}" benim için çalıştı, 3. stash'ımı git saklamaya çalışırken "bilinmeyen seçenek: -encodedCommand" mesajı alıyordum, terminal olarak powershell entegrasyonuna sahip görsel stüdyo kodunu kullanıyordum.
Rajan Chauhan

1

Windows üzerinde Magit ile Emacs ile çalışırken bu hatayı yaşıyorsanız (benim gibi)
bu hızlı çözümün size yardımcı olacağını umuyorum:

(if (eq system-type 'windows-nt)
    (defadvice magit-run-git (before magit-run-git-win-curly-braces (&rest args) activate)
      "Escape {} on Windows"
      (setcar (nthcdr 2 args) 
              (replace-regexp-in-string "{\\([0-9]+\\)}" "\\\\{\\1\\\\}" (elt args 2)))
    )
  )

Bu, tarafından çalıştırılan {}3. bir parametrede alıntı yapacaktır ("stash", "cmd", "stash@{0}").magit-run-git



1

Basit alıntılar arasına zula kimliği koyun:

git stash apply 'stash@{1}'

3
Bu soruya nasıl cevap veriyor? Zula listesinde 3 numaralı dizin yok. Bu ciddi bir cevapsa lütfen bu komutun neden sorunu çözeceğini açıklayın
Brad

Cevabımı açıklığa kavuşturmak için düzenledim: ana fikir basit alıntılar arasına zula kimliği koymaktı. Alt komutları 'uygula' veya 'bırak' için geçerlidir. Zula kimlik numarası aslında önemli değil
Adriano

Bu kod parçacığı soruyu çözebilirken, bir açıklama eklemek, yayınınızın kalitesini iyileştirmeye gerçekten yardımcı olur. Gelecekte okuyucular için soruyu yanıtladığınızı ve bu kişilerin kod önerinizin nedenlerini bilmeyebileceklerini unutmayın.
DimaSan
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.