GIT stash применить реверс не работает с файлами js и rb
Я пытаюсь выяснить, почему GIT не применяет обратное исправление к файлам javascript и ruby, но делает это к файлам php. Мои шаги:
...modifying some php, ruby and js files...
git stash
# сохранение изменений в тайник
git stash apply
# применение их
git stash show -p | git apply -R
# обратное исправление
он работает нормально и не применяет мои спрятанные изменения, но только для файлов php, а не для ruby или javascript. Все файлы (даже php) имеют CRLF
окончания строки. Когда я попробовал файлы с LF
в конце строки никаких проблем не возникало, но мне все еще интересно, почему это работает только для определенных типов файлов в случае CRLF
линий.
Спасибо за вашу помощь!
1 ответ
Я нашел проблему, и я думаю, что мое решение будет полезно для других. На самом деле это происходило после первоначальной миграции с Subversion на Git. Проблема заключалась в том, что файлы в проекте имели разные окончания строк, поэтому это не зависит от типа файла. Когда Git пытался преобразовать их все в один формат во время оформления заказа, это было неправильно, а в некоторых случаях CRLF
был сломан. Решение, которое я нашел:
git config --global core.autocrlf input
# Установите этот параметр в OSX или Linux
git config --global core.autocrlf true
# Установите этот параметр в Windows
git rm --cached -r .
git add .
git commit -m "Line endings fix. Now all lines are in LF format"
git reset --hard
После этого у меня есть чистая ветка со всеми файлами в одном формате. Надеюсь, это кому-нибудь поможет.