Git stash, кажется, делает многое из того, что я хочу, за исключением того, что он немного сложен в сценарии, так как если у вас нет никаких изменений, тогда вы git stash; git stash popбудете делать что-то другое, чем если бы у вас были изменения в вашем хранилище.
Похоже, что git stash createэто решение этой проблемы, и все работает, кроме одной вещи ... Я не могу избавиться от созданного тайника. Есть ли способ избавиться от заначки?
Чтобы было на 100% понятно, что я делаю:
Создайте тайник:
~/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
Используйте тайник:
~/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
#
Удалить тайник: (за исключением того, что этот последний бит не работает)
~/tmp/a(master) $ git stash drop !$
git stash drop 60629375d0eb12348f9d31933dd348ad0f038435
'60629375d0eb12348f9d31933dd348ad0f038435' is not a stash reference
git stash applyон работал. В git applyпопытки прочитать локальный файл патч, который не существует. Честно говоря, это, вероятно, просто не должно быть там, и это никогда не могло бы работать. Я смутно испытываю желание убрать его из вопроса, но, учитывая, что он помог многим в его нынешнем виде, я оставлю это как есть.

git applyзапуск во втором блоке кода на момент написания этой статьи не применял патч - об этом сообщало сообщение об ошибке в выходных данных. Таким образом, на самом деле вы пытались создать тайник (который не работал, см. Комментарии ниже), применить тайник, который не был создан, а затем выбросить тайник, который не был создан. Вот почему вы ничего не сделали.