Jak mogę usunąć wszystkie moje skrytki Git jednocześnie?


1406

Jak mogę usunąć wszystkie moje skrytki Git jednocześnie?

Mówiąc konkretnie, wpisując jedno polecenie.

Odpowiedzi:


2461

Następujące polecenie usuwa wszystkie skrytki:

git stash clear

Z dokumentacji git :

clear

Usuń wszystkie ukryte stany.

WAŻNE OSTRZEŻENIE: Stany te będą wówczas podlegać przycinaniu i ich odzyskanie może być niemożliwe (...).


13
dlaczego nie upuścić skrytki?
user20358

137
@ user20358: Bo stash drop(” Usuń pojedynczy stan ukryty z listy stash Kiedy nie <zapas> jest podana, to usuwa ostatnią jeden (...).. «) nie odpowiedzieć na pytanie (» Jak mogę usunąć wszystko z moje skrypty Git naraz? ”)?
Tadeck

11
Oprócz tego, co zaakceptowała wspomniana odpowiedź - git stash clearaby potwierdzić, czy wszystko zostało wyczyszczone, użyj -git stash list
kamal

2
@ jedd.ahyoung To powinno mieć kolejne 1000 głosów pozytywnych. Dokumentacja gitjest praktycznie niemożliwa do znalezienia! git-scm.com/docs/git-stash
Drenajów

11
@Ryan: git help <command>to najlepszy sposób na uzyskanie dokumentacji (i jest całkiem niezły). W tym przypadku git help stashwyraźnie pokaż, że git stash cleartak się dzieje (nie powstrzymało mnie to od pierwszego przyjścia do SO i poprawienia odpowiedzi ... ale to mówi o mnie więcej niż git: D)
Marco Massenzio

46

Istnieją dwa sposoby usunięcia skrytki:

  1. Jeśli nie potrzebujesz konkretnego zapas, można usunąć go z: $ git stash drop <stash_id>.
  2. Można usunąć wszystkie stashes z repo z: $ git stash clear.

Używaj obu z nich ostrożnie, może być trudno przywrócić usunięte skrytki.

Oto artykuł referencyjny .


2
Zamknięcie terminalu nie ma z tym nic wspólnego. git nie jest demonem; działa tylko wtedy, gdy go nazwiesz. Nie ma pojęcia, że ​​zamknąłeś terminal.
DylanYoung

31

to polecenie umożliwia przeglądanie wszystkich ukrytych zmian.

git stash list

Oto następujące polecenie: użyj go, aby usunąć wszystkie ukryte zmiany

git stash clear

Teraz, jeśli chcesz usunąć jedną z ukrytych zmian z obszaru ukrytego

git stash drop stash@{index}   // here index will be shown after getting stash list.

Uwaga: git stash listumożliwia uzyskanie indeksu z obszaru zapasów git.


Warto wspomnieć, że przynajmniej dla zintegrowanego terminala w VSCode używającego Windows 10 jest to git stash drop 'stash@{index}'z apostrofami.
Oriol Miró

13

Chciałem zachować kilka ostatnich skrytek, ale usunę wszystko inne.

Poniewa wszystkie skrytki zostają przenumerowane po upuszczeniu, w rzeczywistości jest to łatwe do wykonania. Aby usunąć wszystkie skrytki starsze niż skrytka @ {19}:

while git stash drop 'stash@{20}'; do true; done

Czy dotyczy to indeksowanych wartości wprowadzonych w Git 2.11, w których git stash pop 3zamiast tego można odwołać się do 3. skrytki z listy skrytek ? Chciałem wiedzieć, czy możemy używać whilepętli i upuszczać skrytki za pomocą wartości indeksu.
tom_mai78101

Uwielbiam prostotę tego, ładnego, eleganckiego rozwiązania!
dominujący

3

Miałem inne wymaganie, jak tylko kilka skrytek musi zostać usuniętych, w takim przypadku pomocny byłby kod poniżej.

#!/bin/sh
for i in `seq 5 8`
do
   git stash drop stash@{$i}
done

/ * usunie indeks od 5 do 8 * /


spróbujfor iterator in `seq 5 8`; git stash drop stash@{$iterator}; done
Chris McCowan

3
Pamiętaj, że po upuszczeniu pozostałe skrytki przesuwają się o 1 miejsce w górę. Więc jeśli chcesz usunąć z 5 do 8, musisz albo liczyć wstecz, albo usunąć skrytkę @ {5} cztery razy. Na przykład: for i in `seq 4`; do git stash drop 'stash@{5}'; done
wypaczenie

@ChrisMcCowan brakuje także twojego kodudo
steezeburger

3

jeśli chcesz usunąć najnowszą skrytkę lub dowolny konkretny indeks -

git stash drop type_your_index

> git stash list

  stash@{0}: abc
  stash@{1}: xyz
  stash@{1}: pqr

> git stash drop 0

  Dropped refs/stash@{0}

> git stash list

  stash@{0}: xyz
  stash@{1}: pqr

jeśli chcesz usunąć wszystkie zapasy na raz -

> git stash clear
>

> git stash list
>

Ostrzeżenie : po zakończeniu nie możesz przywrócić swojej skrytki


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.