Сделать Git "LF будет заменен CRLF" предупреждения уходят
У меня есть установка Git, поэтому она не фиксирует несогласованные окончания строк. Проблема с этим - целая куча файлов, которые изменяются, хотя они и не являются. Что я набираю, чтобы эти файлы имели окончание строк на локальной стороне?
# git checkout dev
M src/au/policy/dao/EmailQueue.java
M src/au/policy/dao/EmailQueueFactory.java
M src/au/policy/dao/PolicyPublisher.java
Already on 'dev'
# git diff
warning: LF will be replaced by CRLF in src/au/policy/dao/EmailQueue.java
warning: LF will be replaced by CRLF in src/au/policy/dao/EmailQueueFactory.java
warning: LF will be replaced by CRLF in src/au/policy/dao/PolicyPublisher.java
Это то, что я добавил в мой конфигурационный файл Git, который, похоже, делает то, что я думал, помимо этой проблемы:
autocrlf = true
Ответы
Ответ 1
Вы можете просто удалить и переустановить повреждающие файлы из индекса следующим образом:
rm <files>
git checkout -- <files>
Или, если они являются только модифицированными файлами (будьте осторожны с этой командой), вы можете script сделать это следующим образом:
git diff --name-only --diff-filter=M | xargs rm --
git checkout -- .
В системе GNU вы можете использовать немного более безопасную трубу, но в любом случае у вас не должно быть пробелов или других разделительных символов в ваших именах.
git diff -z --name-only --diff-filter=M | xargs -0 rm --
Ответ 2
Это может произойти, если вы измените переменную core.autocrlf
config (если я правильно понимаю вашу проблему).
Если вы находитесь в состоянии чистой, то есть сразу после фиксации, и у вас нет несанкционированных изменений, принудительная повторная проверка и удаление индекса должны сделать трюк:
Приведенная ниже команда git reset --hard HEAD
заставит вашу текущую ветку указывать на последнюю фиксацию, и весь незафиксированный код будет потерян. Обязательно зафиксируйте код или возьмите резервную копию
$ rm .git/index
$ git reset --hard HEAD
Это, я думаю, будет синхронизировать файлы рабочей области и индекс (промежуточную область), чтобы следовать настройкам crlf.
Ответ 3
У меня возникла эта проблема при создании нового проекта Xcode.
Мое решение для этой проблемы:
В терминальной записи
$: git config --global --edit
Затем в файле git config измените safecrlf на false. Мои настройки:
[core]
autocrlf = input
safecrlf = false
Я знаю, что git имеет для этого инструменты командной строки cmd, но они не работают для меня.
А затем Xcode без проблем создает git repos.
Ответ 4
Единственное, что я могу придумать, это проверить, установлен ли core.safecrlf
на warn
.
git config --get core.safecrlf
Я думаю, что возможные значения true
, false
и warn
. Я считаю, что настройка на false
решит предупреждение, хотя это может быть не очень хорошая идея.
Ответ 5
Попробуй, это сработало для меня:
cd src/au/policy/dao
dos2unix
Если в этой папке есть другие файлы, вы захотите разбить ее на следующие (в противном случае она будет пытаться сделать это для каждого файла в любых подкаталогах, что может занять некоторое время):
cd src/au/policy/dao
dos2unix EmailQueue.java
dos2unix EmailQueueFactory.java
dos2unix PolicyPublisher.java
Он быстро работал на моей машине и фиксировал все окончания строки, и это немного проще и проще, чем некоторые из этих других исправлений.