Git stash dwukrotnie


95

Musiałem szybko zmienić gałęzie git, więc uruchomiłem git stash, ale musiałem uruchomić go ponownie, ponieważ jeden z moich plików wymagał edycji.

Uruchomiłem więc git stashdwa razy i jestem gotowy, aby wrócić do edycji moich plików. Pobiegłem, git stash applyale nie jestem przekonany, że wszystkie pliki, które miałem, zostały rozpakowane. Czy jest coś, co mogę zrobić? Jakiś sposób to sprawdzić?

Kiedy biegnę git stash show, widzę tylko ostatnią z moich dwóch skrytek.

Czy w ogóle można pokazać wszystko git stashes?


4
git stash list. Jeśli zrobiłeś dwie skrytki, zadzwoń git stash popdwukrotnie.
Felix Kling,

Cześć, naprawiłeś to! Powinieneś to podać jako odpowiedź.
Wielkie

Odpowiedzi:


173

Możesz uzyskać listę wszystkich skrytek za pomocą

git stash list

który pokaże ci coś podobnego

stash@{0}: WIP on dev: 1f6f8bb Commit message A
stash@{1}: WIP on master: 50cf63b Commit message B

Jeśli zrobiłeś dwa skrytki, po prostu zadzwoń git stash popdwa razy. W przeciwieństwie do git stash apply, popnakłada i usuwa najnowszą skrytkę.

Możesz też odwołać się do konkretnej skrytki, np

git stash show stash@{1}

lub

git stash apply stash@{1}

Wielkie dzięki. Uratowałem mój dzień.
stephenmurdoch

25
Jeśli chcesz git stash popdwa razy, ponieważ chcesz, aby oba skrytki były w tym samym zatwierdzeniu, ale napotkasz „błąd: Twoje lokalne zmiany w następujących plikach zostaną nadpisane przez scalenie:” na drugim git stash pop, możesz: 1) git stash pop, 2) git add .i 3 ) git stash pop.
gabe

To mi pomogło. Musiałem zrobić „git stash”, a następnie „git stash --all”, aby schować nowe, niezarejestrowane pliki. Wykonywanie git stash pop dwa razy nie działało. Odzyskałem tylko późniejszy zapas.
Leopold Kristjansson

0

Natknąłem się na tę sytuację, zrobiłem dwa skrytki i git stash pop właśnie rozpakowałem ostatnią skrytkę. Więc zrobiłem

git stash list

git stash pop stash@{1}

To uwolniło moją pierwszą skrytkę i mogłem zobaczyć wszystkie zmiany!


0

Zadałeś kilka różnych pytań w poście, a inni respondenci udzielili dobrych odpowiedzi na niektóre z nich. Ten, który wydaje się najważniejszy, ale nie otrzymał odpowiedzi, to:

>> Nie jestem przekonany, że wszystkie przechowywane przeze mnie pliki zostały rozpakowane. Czy jest coś, co mogę zrobić? Jakiś sposób to sprawdzić?

Porównaj skrytkę z lokalnym drzewem

Myślę, że chcesz porównać skrytkę z lokalnym drzewem roboczym . Możesz umieścić przełącznik -p w poleceniu skrytki i jesteś dobry:

git stash show -p

Jeśli jest jakiś konkretny, którego szukasz, po prostu użyj jego nazwy lub identyfikatora skrytki git z listy skrytek:

git stash show -p stash@{3}

Może użyć diff?

Jeśli naprawdę chcesz rozwijać swoje umiejętności git, zawsze możesz wybrać różnicę. Aby zobaczyć różnicę między tym, co jest w skrytce, a tym, co zostało sprawdzone w HEAD w gałęzi głównej, można użyć następującej różnicy:

git diff stash@ master

Kolejnym zgrabnym poleceniem pokazującym zmiany w elementach historii skrytki, które mogą się przydać, jest --stat:

git stash list --stat

Ale myślę, że prosta odpowiedź to właściwa odpowiedź. Po prostu użyj przełącznika -p, a prawdopodobnie zobaczysz, czy skrytka, którą odłożyłeś na półkę , została cofnięta.

 git stash show -p stash@{3}
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.