Git Применить версию приложения
У меня есть 2 ветки: мастер | дизайн
Работая в дизайне, я сделал тайник и переключился на мастера, внёс некоторые коррективы. Вернулся к дизайну и stash apply
только для того, чтобы потерять все мои изменения в ветке дизайна.
Я надеюсь, что вся моя работа находится в тайнике, поскольку я не очистил или удалил их.
Если я создаю тайник, я получаю 4 результата:
[email protected]{0}: WIP on design: f2c0c72... Adjust Password Recover Email
[email protected]{1}: WIP on design: f2c0c72... Adjust Password Recover Email
[email protected]{2}: WIP on design: eb65635... Email Adjust
[email protected]{3}: WIP on design: eb65635... Email Adjust
Если я попробую git stash apply f2c0c72
я git stash apply f2c0c72
сообщение об ошибке:
fatal: Needed a single revision
f2c0c72: no valid stashed state found
Как я могу применить определенный тайник?
Ответы
Ответ 1
Ключи от тайника на самом деле являются элементами [email protected]{n}
тайника слева. Так что постарайтесь:
git stash apply [email protected]{0}
(обратите внимание, что в некоторых оболочках вам нужно указывать "[email protected]{0}"
, например zsh, fish и powershell).
Начиная с версии 2.11, это довольно просто, вы можете использовать номер стека N вместо [email protected]{n}
. Так что теперь вместо использования:
git stash apply "[email protected]{n}"
Вы можете ввести:
git stash apply n
Чтобы получить список тайников:
git stash list
На самом деле [email protected]{0}
- это версия git, на которую вы можете переключиться... но git stash apply...
должен выяснить, как DTRT применить ее к вашему текущему местоположению.
Ответ 2
Чтобы применить кошелек и удалить его из списка, запустите:
git stash pop [email protected]{n}
Чтобы применить кошелек и сохранить его в кэше тайника, запустите:
git stash apply [email protected]{n}
Ответ 3
Начиная с версии 2.11, это довольно просто, вы можете использовать номер стека N вместо слова "[email protected]{n}"
. Так что теперь вместо использования:
git stash apply "[email protected]{n}"
Вы можете ввести:
git stash apply n
Например, в вашем списке:
[email protected]{0}: WIP on design: f2c0c72... Adjust Password Recover Email
[email protected]{1}: WIP on design: f2c0c72... Adjust Password Recover Email
[email protected]{2}: WIP on design: eb65635... Email Adjust
[email protected]{3}: WIP on design: eb65635... Email Adjust
Если вы хотите применить [email protected]{1}
вы можете набрать:
git stash apply 1
В противном случае вы можете использовать его, даже если у вас есть некоторые изменения в вашем каталоге, начиная с 1.7.5.1, но вы должны быть уверены, что тайник не перезапишет изменения вашего рабочего каталога, если это произойдет, вы получите ошибку:
error: Your local changes to the following files would be overwritten by merge:
file
Please commit your changes or stash them before you merge.
В версиях до 1.7.5.1 он отказывался работать, если в рабочем каталоге произошли изменения.
Примечания к выпуску Git:
Пользователь всегда должен сказать "stash @{$ N}", когда присваивает имя отдельному элементу в расположении по умолчанию для хранилища, то есть повторно ставит отметки в refs/stash. Команда "git stash" научилась принимать "git stash apply 4" как сокращение от "git stash apply stash @{4}"
git stash apply "раньше отказывался работать, если в рабочем дереве были какие-либо изменения, даже если изменение не перекрывалось с записанным изменением тайника
Ответ 4
Если вы находитесь на машине Windows и в PowerShell, нужно указать аргумент, например:
git stash apply "[email protected]{0}"
... или применить изменения и удалить из кошелька:
git stash pop "[email protected]{0}"
В противном случае без кавычек вы можете получить эту ошибку:
фатальный: неоднозначный аргумент 'stash @': неизвестная версия или путь не в рабочего дерева.
Ответ 5
git stash apply n
затем выберите тайник для применения
git stash apply 1
Ответ 6
Git Stash list
В списке будут показаны все спрятанные элементы, например: stash @{0} :, stash @{1}:,.., stash @{n}:
Затем выберите число n, которое обозначает stash @{n}:
git stash apply n
for eg: git stash apply 1 will apply that particular stashed changes to the current branch