Как отменить повреждение autocrlf? - PullRequest
4 голосов
/ 25 мая 2011

Я уже некоторое время использую git с autocrlf, установленным в true. Я использовал его с git-svn через cygwin. Это вызывает у меня кучу проблем, и я вижу здесь и здесь , что я, вероятно, должен отключить его. Как я могу "устранить ущерб" между стволом и мастером?

1 Ответ

4 голосов
/ 25 мая 2011

Если вы просто хотите исправить это в одном коммите, а затем оставить его в покое, вы можете сделать что-то вроде:

find . -not \( -path ./.git -prune \) -type f -exec sed -i -e 's/\r//g' {} +

Примечание: это удалит CR из каждого файла в хранилище.Добавьте -name '*.someext' или другие предложения после -type f, чтобы настроить экстент поиска.

Если вы хотите редактировать предыдущие коммиты (учтите, что это нарушит других людей, пытающихся объединить свои изменения в вашу ветку!), Выможно использовать git filter-branch - написать скрипт, который выполняет что-то похожее на вызов find выше, а затем передать его с помощью чего-то вроде

git filter-branch --tree-filter /full/path/to/myscript.sh master otherbranch

Это переписает историю, удалив любой CR, который когда-либо былхранилище исходного кода.Обратите внимание, что это, скорее всего, сломает git-svn, если вы запустите его для любых коммитов, созданных git-svn.Вы можете использовать что-то вроде trunk..mylocalbranch только для запуска на локальных коммитах.

...