Wygląda na to, że Git Stash robi wiele tego, czego chcę, poza tym, że jest to trochę trudne do napisania, ponieważ jeśli nie masz żadnych zmian, git stash; git stash popzrobisz coś innego niż zmiany w twoim repozytorium.
Wydaje się, że git stash createto jest odpowiedź na ten problem i wszystko działa, z wyjątkiem jednej rzeczy… Nie mogę pozbyć się stworzonej skrytki. Czy jest jakiś sposób na pozbycie się skrytki?
Aby w 100% wyjaśnić, co robię:
Utwórz skrytkę:
~/tmp/a(master) $ git stash create
60629375d0eb12348f9d31933dd348ad0f038435
~/tmp/a(master) $ git st
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: b
#
~/tmp/a(master) $ git reset --hard
HEAD is now at 555d572 log message
Użyj skrytki:
~/tmp/a(master) $ git apply 60629375d0eb12348f9d31933dd348ad0f038435
fatal: can't open patch '60629375d0eb12348f9d31933dd348ad0f038435': No such file or directory
~/tmp/a(master) $ git stash apply 60629375d0eb12348f9d31933dd348ad0f038435
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: b
#
Usuń skrytkę: (oprócz tego, że ten ostatni bit nie działa)
~/tmp/a(master) $ git stash drop !$
git stash drop 60629375d0eb12348f9d31933dd348ad0f038435
'60629375d0eb12348f9d31933dd348ad0f038435' is not a stash reference
git stash applyzadziałała. Do git applypróby odczytu lokalnego pliku łaty, które nie istnieje. Szczerze mówiąc, prawdopodobnie nie powinno tam być i nigdy nie mogłoby zadziałać. Kusi mnie, by usunąć to pytanie, ale biorąc pod uwagę, że pomogło tak wielu osobom w obecnej formie, pozostawię je bez zmian.

git applybieg w drugim polu kodu w momencie pisania tego tekstu nie zastosował łaty - komunikat o błędzie w danych wyjściowych powiedział ci to. W rzeczywistości próbowałeś utworzyć skrytkę (która nie działała, patrz komentarze poniżej), zastosować skrytkę, która nie została utworzona, a następnie upuścić skrytkę, która nie została utworzona. To dlatego nic nie działało.