Подтвердить что ты не робот

Невозможно поместить 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 все еще показывает список моих спрятанных изменений, но я не понимаю, что я делаю сейчас.

Как я могу расправляться?

4b9b3361

Ответ 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, как только я уверен, что все правильно.: -)