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

После этого у меня есть чистая ветка со всеми файлами в одном формате. Надеюсь, это кому-нибудь поможет.

Другие вопросы по тегам