Я создал свой репозиторий с помощью autocrlf=true
, а затем сделал несколько проверок и коммитов с помощью autocrlf=false
. Затем переключился обратно на autocrlf=true
(ОС Win). Все вроде бы было ок, пока я не начал слияние между ветками. Возникало много конфликтов слияния, когда весь файл помечался как измененный из-за измененного eols
(я полагаю, это были те файлы, которые были извлечены и зафиксированы с autocrlf=false
).
Есть некоторая история, которая для меня стоит, поэтому я предпочитаю сделать некоторое преобразование или исправить коммиты с преобразованным eols
, а не создавать новое репо и начинать новую жизнь.
Вот как я понимаю autocrlf
(ОС Win):
случай если autocrlf=true
WorkingTree -> commit -> GITRepository
CRLF CRLF to LF LF
LF no conv. LF
WorkingTree <- checkout <- GITRepository
CRLF LF to CRLF LF
случай если autocrlf=false
WorkingTree -> commit -> GITRepository
CRLF no conv. CRLF
LF no conv. LF
WorkingTree <- checkout <- GITRepository
CRLF no conv. CRLF
LF no conv. LF
Теперь я хотел бы использовать GIT с autocrlf=false
, поэтому я решил проверить каждую ветку, восстановить eols
исходных файлов с помощью утилиты Конвертер EOL и зафиксируйте его с помощью CRLF. Я это сделал, но по прошествии времени остались некоторые файлы, которые, вероятно, не были проверены после того, как я изменил настройку autocrlf
на false
(или эти файлы объединились из старых неисправленных коммитов? При конвертации я использовал маску *.filetype для автоматизировать обработку всех LF в CRLF, поэтому для меня нет другого объяснения такой ситуации). Я также пытался touch
файлы, чтобы повторно зафиксировать их все (как я видел где-то здесь в stackoverflow), но изменение даты не имеет отношения к GIT AFAIK. Я также читал Как устранить ущерб, нанесенный autocrlf, но не уверен, что это мой случай, а также не понимаю фокусов волшебника.
Как я могу избавиться от этого беспорядка, пожалуйста?
autocrlf=input
? если ваше репо не было общедоступным, вы можете использовать это иfilter-branch --index-filter
для очистки окончаний строк в своей истории. - person knittl   schedule 26.08.2011autocrlf=true
, чтобы получитьCRLF
после оформления заказа (OS Win). Есть ли возможность преобразовать репо напрямую вCRLF
и оставить после этогоautocrlf=false
? - person Andik   schedule 30.08.2011autocrlf=false
, поэтому окончания строк не преобразуются и остаются такими, как они есть в файле. - person knittl   schedule 30.08.2011autocrlf=input
вызывает конверсию во время фиксации и отсутствие конверсии во время проверки. Что именно происходит на компьютере с Windows? Репозиторий будет полностью CRLF или весь LF? Я не могу найти это в руководстве. Спасибо. - person Andik   schedule 31.08.2011input
, и в этом случае преобразование вывода не выполняется.« - person knittl   schedule 31.08.2011CRLF→LF
- person knittl   schedule 31.08.2011filter-branch --index-filter
? Спасибо. - person Andik   schedule 13.09.2011git filter-branch --tree-filter 'true;' --all
. Я думаю, вам понадобится древовидный фильтр вместо индексного фильтра, потому что преобразование crlf происходит только при оформлении заказа (другими словами: вам нужно рабочее дерево).'true;'
здесь просто фиктивный фильтр, который на самом деле ничего не делает - person knittl   schedule 13.09.2011