Невозможно поместить git stash, "Ваши локальные изменения в следующие файлы будут перезаписаны слиянием"
Итак, у меня была нагрузка изменений и некоторые невоспроизводимые файлы. Мне нужно было что-то настроить, поэтому я использовал git stash -u
, изменил пару вещей, совершил эти изменения, нажал их, а затем попытался git stash pop
.
Поскольку я изменил пару файлов, которые я спрятал, я получил следующее сообщение:
error: Your local changes to the following files would be overwritten by merge:
file_1.py
file_2.py
Please, commit your changes or stash them before you can merge.
Aborting
Это кажется странным, я совершил все новые изменения, мой чек был чистым, когда я запускал команду.
Кажется, что операция git stash pop
не закрыла половину моих изменений и не проверенных файлов, но если я попробую и git stash pop
снова, я получаю вывод, например:
some_file.html already exists, no checkout
some_other_file.html already exists, no checkout
yet_another_file.html already exists, no checkout
Could not restore untracked files from stash
git stash show
все еще показывает список моих спрятанных изменений, но я не понимаю, что я делаю сейчас.
Как я могу расправляться?
Ответы
Ответ 1
Я обошел это, я думаю, что это была какая-то ошибка, так как мой рабочий каталог был чистым и обновленным.
Я запустил git checkout .
, и после этого git stash apply
работал нормально, я не получил вообще никаких проблем. Мне было бы интересно разобраться, что на самом деле заставило его потерпеть неудачу, хотя.
Ответ 2
Для тех, у кого действительно есть неработающая работа, и вы хотите вытащить свой тайник, не теряя эту работу, вот способ (благодаря @iFreilicht):
-
Временно выполните любые незафиксированные изменения:
git add -u .
-
Теперь вы можете применить свой штамп без git жалобы (надеюсь):
git stash pop
-
Теперь отключите все, но оставьте файлы такими, какие они есть сейчас:
git reset
Ответ 3
Приложению, которое было сделано с помощью -u
, необходимо удалить очищенные файлы перед тем, как apply
-ed (и pop
будет просто apply
+ drop
).
Из общей паранойи я бы mv
безответные файлы где-то в безопасности, затем git stash apply
, тщательно проверьте все и git stash drop
, как только я уверен, что все правильно.: -)