Force git stash для перезаписывания добавленных файлов

У меня есть несколько файлов, которые были отслежены в git. Я сделал некоторые изменения и хотел их совершить, но понял, что забыл сначала проверить немодифицированные файлы. Поэтому я спрятал файлы, а затем добавил немодифицированные версии.

Затем, когда я применяю stash к репозиторию, я получаю конфликты из-за уже добавленных файлов.

Как я могу применить stash и принудительно использовать версии в stash для оригиналов в репозитории?

Спасибо

Ответ 1

Используйте git checkout вместо git stash apply:

$ git checkout stash -- .
$ git commit

Это восстановит все файлы в текущем каталоге до их сохраненной версии.


Если есть изменения в других файлах в рабочем каталоге, которые должны быть сохранены, вот менее жесткая альтернатива:

$ git merge --squash --strategy-option=theirs stash

Если в индексе есть изменения или слияние коснется файлов с локальными изменениями, git откажется от слияния. Отдельные файлы могут быть извлечены из тайника с помощью

$ git checkout stash -- <paths...>

или в интерактивном режиме с

$ git checkout -p stash

Ответ 2

git stash show -p | git apply

и затем git stash drop если вы хотите сбросить спрятанные предметы.

Ответ 3

Чтобы заставить git stash pop запустить эту команду

git stash show -p | git apply && git stash drop

Ответ 4

Я удалил и повторно клонировал свое рабочее место, чтобы исправить эту проблему.

Ответ 5

Когда вы git stash apply получаете конфликты, правильно? Просто разрешите эти конфликты так же, как вы разрешите конфликт слиянием. При разрешении выберите версии из шкафа.