Poszedłem do gałęzi i trochę popracowałem. Chciałem przejść do innej gałęzi, ale nie chciałem się angażować, więc to zrobiłem git stash
. Wtedy zrobiłem git checkout <otherbranch>
. Pracowałem tam trochę i tak jak w pierwszej oddziale chciałem się z niej wyłączyć przed podjęciem pracy. Więc git stash
tam też zrobiłem . Przełączałem się z powrotem na pierwszą gałąź i próbowałem ją rozpakować ( git stash pop
) myśląc, że dostanie skrytkę z tej konkretnej gałęzi. Byłem zaskoczony, że otworzył skrytkę z <otherbranch>
(najnowszy stashed). Miałem wrażenie, że skrytka jest specyficzna dla gałęzi, ale to zachowanie wskazuje, że jest tylko jedna skrytka dla całego lokalnego repozytorium.
Czy jest git stash
specyficzna dla branży czy dla całego repozytorium? Jeśli dotyczy całego repozytorium, czy mogę przekazać mu opcje, aby było specyficzne dla gałęzi?
stash list
elementu oprócz samego opisu?git stash show
(lubgit stash show stash@{<number>}
do czegoś innego niż@{0}
wersja) dajediff --stat
; dodaj,-p
aby uzyskać większą różnicę. Uwaga: to porównuje "drzewo robocze" w "torbie skrytki" z zatwierdzeniem, z którego wisi; nie ma interfejsu front-end, aby zobaczyć, co znajduje się w „indeksie” w podanym worku.Nie i nie. Magazyn git jest przypisany do repozytorium.
Oto fajna strona o tym, jak go używać.
źródło
git stash
nie dotyczy gałęzi.git stash
(co można łatwo zgubić, gdy masz dużo skrytek i gałęzi)git commit
aby zapisać niedokończony kod w swojej gałęzi, a kiedy będziesz gotowy do zakończenia kodu, zrób to,git reset ${COMMIT_HASH_VALUE}
aby odzyskać niedokończony kodgit commit
agit reset
gdy są używane razem poprawnie, mogą symulować plikgit stash
dla określonej gałęziOto typowy scenariusz z prawdziwego życia, który pokazuje wartość i użycie
commit
reset
poleceń i :git commit
na gałęzi funkcji XCOMMIT_HASH_VALUE
na późniejgit reset ${COMMIT_HASH_VALUE}
(FYI, domyślna wartość
git reset
to--mixed
)źródło
git reset HEAD~1
.HEAD^1
lubHEAD~1
.Nie jestem pewien, dlaczego każda odpowiedź tutaj sugeruje emulowanie skrytki z
commit
+reset
. Skrytka jest idealna w użyciu, szczególnie podczas pracy na wielu gałęziach. Nie chcę też zatwierdzać, gdy pracuję na wielu gałęziach, ponieważ chcę, aby wszystkie zmodyfikowane zmiany były nadal podświetlane w moim edytorze po powrocie.Oto przepływ pracy w skrytce:
Ilekroć musisz zmienić gałąź i nie jesteś gotowy do zatwierdzenia, zapisz zmiany na stosie
Kiedy wrócisz do oddziału, sprawdź skrytkę
Jeśli jesteś na gałęzi,
FixIssue0203
możesz użyć,git stash pop
ponieważ spowoduje to nałożenie górystash@{0}
i usunięcie go ze skrytki.Jeśli jednak jesteś w gałęzi
ImproveReadme
, powinieneś najpierw umieścić skrytkę 1,git stash apply stash@{1}
a następnie usunąć skrytkę 1 ze stosugit stash drop stash@{1}
.Otóż to!
źródło