Aktualizacja 2:
Nie jestem pewien, dlaczego ludzie narzekają na tę odpowiedź, wydaje się, że działa idealnie ze mną, dla plików bez zmian możesz dodać -u
flagę
Pełne polecenie staje się git stash --keep-index -u
A oto fragment git-stash
pomocy
Jeśli zostanie użyta opcja --keep-index, wszystkie zmiany już dodane do indeksu pozostaną nienaruszone.
Jeśli zostanie użyta opcja --include-untracked, wszystkie nieśledzone pliki są również przechowywane, a następnie czyszczone za pomocą git clean, pozostawiając katalog roboczy w bardzo czystym stanie. Jeśli zamiast tego zostanie użyta opcja --all, ignorowane pliki są ukrywane i czyszczone razem z nieśledzonymi plikami.
A oto gif pokazujący, jak to wygląda:
Aktualizacja:
Mimo że jest to wybrana odpowiedź, wiele osób zwróciło uwagę, że [odpowiedź poniżej] (https://stackoverflow.com/a/34681302/292408) jest poprawna, polecam ją sprawdzić.
Dzisiaj (31.01.2020) ponownie przetestowałem swoją odpowiedź z wersją git 2.24.0
i nadal uważam, że jest poprawna, dodałem powyżej małą notatkę o nieśledzonych plikach. Jeśli uważasz, że to nie działa, podaj również swoją wersję git.
Stara odpowiedź :
Jeśli ta --keep-index
opcja jest używana, wszystkie zmiany już dodane do indeksu pozostają nienaruszone:
git stash --keep-index
Z dokumentacjigit-stash
:
Testowanie częściowych zatwierdzeń
Możesz użyć, git stash save --keep-index
gdy chcesz dokonać dwóch lub więcej zatwierdzeń ze zmian w drzewie roboczym i chcesz przetestować każdą zmianę przed zatwierdzeniem:
# ... hack hack hack ...
$ git add --patch foo # add just first part to the index
$ git stash save --keep-index # save all other changes to the stash
$ edit/build/test first part
$ git commit -m 'First part' # commit fully tested change
$ git stash pop # prepare to work on all other changes
# ... repeat above five steps until one commit remains ...
$ edit/build/test remaining parts
$ git commit foo -m 'Remaining parts'
Ale jeśli chcesz tylko wizualnie sprawdzić tylko zmiany etapowe, możesz spróbować difftool
:
git difftool --cached
-k
opcja) lub uciążliwe w użyciu.