Как сделать обратное нанесение тайника?
У меня есть небольшой патч, сохраненный в моем git-хранилище. Я применил его к своей рабочей копии с помощью git stash apply
. Теперь я хотел бы отменить эти изменения, применив патч в обратном порядке (что-то вроде того, что делает git revert
, но в отношении хранилища).
Кто-нибудь знает, как это сделать?
Уточнение: В моей рабочей копии есть и другие изменения. Мой конкретный случай трудно описать, но вы можете представить себе отладочный или экспериментальный код, который находится в тайнике. Теперь он смешан в моей рабочей копии с некоторыми другими изменениями, и я хотел бы увидеть эффект с изменениями из тайника и без них.
Не похоже, что stash поддерживает это в настоящее время, но git stash apply --reverse
было бы хорошей возможностью.
Согласно
git stash
[save]
берет состояние вашего рабочего каталога и состояние индекса и прячет их, устанавливая индекс и рабочую область в версиюHEAD
.git stash apply
возвращает эти изменения, так чтоgit reset --hard
удалит их снова.git stash pop
возвращает эти изменения и удаляет верхнее спрятанное изменение, так чтоgit stash [save]
вернется к предыдущему (до открытия) состоянию в этом случае.будут удалить не фиксировать изменения.
Прямой крой вставить N от страница ЖКТ Это'ы четко сформулировано и даже включает в себя псевдоним;
ООН-применение заначку В некоторых случаев применения может потребоваться, чтобы применить спрятал изменения, сделать какую-то работу, а затем применить те изменения, которые изначально пришли из тайника. Git не предоставить такую команду отменить заначку, но можно добиться эффекта путем простого извлечения патча, связанных с набором и применяя его в обратном:
Опять же, если вы не указать тайник, git будет использовать самые последние заначки:
Возможно, вы захотите создать псевдоним и эффективно добавить в заначке-отменить команду в Git. Например:
Это давно назрело, но если я правильно интерпретирую проблему, я нашел простое решение, обратите внимание, это объяснение в моей собственной терминологии:
git stash [save]
сохранит текущие изменения и установит вашу текущую ветку в "чистое состояние"git stash list
выдает что-то вроде:stash@{0}: On develop: saved testing-stuff
git apply stash@{0}
установит текущую ветку как beforestash [save]
.git checkout .
установит текущую ветку как afterstash [save]
.Код, сохраненный в тайнике, не потерян, он может быть найден с помощью
git apply stash@{0}
снова.В любом случае, это сработало для меня!
В дополнение к @Грег ответа беконом, в случае, если двоичные файлы были добавлены в индекс и часть заначки, используя
может привести к
Добавление `--Binary, а решает проблему, но, к сожалению, не'т понял, почему еще.
Это в дополнение к выше ответы, но добавляет поиск заначку контроля версий Git на сообщение как спрятать номер может измениться, когда новый тайниках сохраняются. Я написал пару функций в bash:
в Git тайник$ сэкономить на "заначке"
в$ обращаться на "заначке"
в$ удалить и"заначке"
вКроме того, что уже упоминалось, самый простой способ это сначала сделать
и после проверки все локальные изменения