Как упоминалось @bentolo, вы можете вручную удалить файлы, на которые он жалуется, переключить ветки, а затем вручную добавить их обратно. Но лично я предпочитаю оставаться «в рамках мерзавца».
Лучший способ сделать это - преобразовать тайник в ветку. Когда это ветвь, вы можете нормально работать в git, используя обычные методы / инструменты, связанные с ветвями, которые вы знаете и любите. На самом деле это полезный общий метод работы с тайниками, даже если у вас нет указанной ошибки. Это хорошо работает, потому что тайник - это действительно скрытая фиксация (см. PS).
Преобразование тайника в ветку
Следующее создает ветку на основе HEAD при создании тайника, а затем применяет тайник (он не фиксирует его).
git stash branch STASHBRANCH
Работа с "веткой тайника"
Что вы будете делать дальше, зависит от отношения между тайником и местом, где сейчас находится ваша целевая ветка (которую я назову ORIGINALBRANCH).
Вариант 1 - переустановить ветку тайника в обычном режиме (много изменений с момента тайника)
Если вы внесли много изменений в свой ORIGINALBRANCH, то вам, вероятно, лучше всего относиться к STASHBRANCH как к любому локальному филиалу. Зафиксируйте свои изменения в STASHBRANCH, переустановите его на ORIGINALBRANCH, затем переключитесь на ORIGINALBRANCH и переустановите / объедините изменения STASHBRANCH поверх него. Если есть конфликты, обработайте их как обычно (одно из преимуществ этого подхода - вы можете видеть и разрешать конфликты).
Вариант 2 - сбросить исходную ветку, чтобы она соответствовала тайнику (ограниченные изменения с момента тайника)
Если вы просто спрятали, сохранив некоторые поэтапные изменения, затем зафиксировали, и все, что вам нужно, это получить дополнительные изменения, которые не были поставлены при хранении, вы можете сделать следующее. Он вернется к исходной ветке и индексу без изменения вашей рабочей копии. Конечным результатом будут дополнительные изменения в вашей рабочей копии.
git symbolic-ref HEAD refs/heads/ORIGINALBRANCH
git reset
Задний план
Тайники - это ветки / теги лайков (не патчи)
PS Заманчиво думать о тайнике как о патче (точно так же, как заманчиво думать о фиксации как о патче), но на самом деле тайник - это фиксация против HEAD, когда он был создан. Когда вы применяете / pop, вы делаете что-то похожее на выбор вишни в текущей ветке. Имейте в виду, что ветки и теги на самом деле являются просто ссылками на коммиты, поэтому во многих случаях тайники, ветки и теги - это просто разные способы указания на коммит (и его историю).
Иногда требуется, даже если вы не внесли изменений в рабочий каталог
PPS, вам может понадобиться этот метод после того, как вы просто использовали stash с --patch и / или --include-untracked. Даже без изменения рабочих каталогов эти параметры могут иногда создавать тайник, который вы не можете просто применить обратно. Должен признаться, не совсем понимаю почему. См. Http://git.661346.n2.nabble.com/stash-refuses-to-pop-td7453780.html для обсуждения.