Używam Ubuntu 13.10 x64 i pracuję nad projektem, w którym niektórzy programiści używają systemu Windows. Niedawno zmieniłem konfigurację git core.eol
na „lf” oraz core.autocrlf
na „input” i core.safecrlf
„true”. Od tego czasu, kiedy próbuję zatwierdzić plik do mojego lokalnego repozytorium, pojawia się ten błąd:
fatal: CRLF would be replaced by LF in ......
Z tego co rozumiem, jeśli ustawię core.eol
na "lf" i core.autocrlf
"input", git automatycznie przekonwertuje CRLF na LF, ale dlaczego ten błąd przyjdzie na zewnątrz? Jak mogę rozwiązać ten problem?
Dziękuję Ci.
git diff
wyjściu: git.661346.n2.nabble.com/ ...core.autocrlf
na wejście?git config core.eol
"lf
"icore.autocrlf
na"input
"": to nie zmienia plików, które już tam są. Miałoby to wpływ na przyszłośćgit pull
. Bieżące pliki nadal znajdują się w CRLF, a jeśli są zmodyfikowane, są konwertowane na LF, jeśli to możliwe, a jeśli nie, wyzwala wspomniany komunikat o błędzie.Miałem ten sam problem i bezskutecznie wypróbowałem sugerowane rozwiązanie.
Musiałem wykonać drugie polecenie, aby zadziałało:
źródło
źródło
git diff
cały mój plik (1000 linii) jako konflikt. Narzędzia porównywania widzą tylko 3 zmiany liniowe.Można po prostu spróbować dos2unix:
źródło
Zdarzyło mi się to na tysiącach plików. Napisałem więc szybki skrypt basha, aby
dos2unix
naprawić to za mnie. Ktoś inny w systemie Linux lub Mac może uznać to za przydatne.Zasadniczo próbuje to zrobić
git add .
. Jeśli polecenie nie powiedzie się, pobiera nazwę niezgodnego pliku z danych wyjściowych błędu. Następnie działados2unix
na tym pliku. Powtarza ten proces, ażgit add .
zadziała.Jeśli to uruchomisz, powinieneś zobaczyć
dos2unix: converting file xxx to Unix format...
wielokrotnie. Jeśli nie, to nie działa, więc po prostu naciśnij ctrl+ club command+, caby go zatrzymać.źródło
Musisz dodać wszystkie pliki, które
git status
są wyświetlane jako zmodyfikowane:A następnie zatwierdź zmiany:
Spowoduje to zachowanie lokalnych plików bez zmian, ale pozostaną
autocrlf
one w zdalnym repozytorium.źródło
Napotkałem ten sam problem i naprawiłem edycję,
.gitattributes
jak poniżej.zakomentuj 2 linie w .gitattributes
źródło
Nie jestem pewien, czy to dotyczy Ciebie, ale otrzymywałem ten błąd, gdy przypadkowo próbowałem dodać wszystko
node_modules
do etapowych zmian. Więc faktycznie rozwiązać mój problem..gitignoring
node_modules
źródło
Jestem na komputerze Mac z terminalem i miałem ten problem z plikiem .htaccess, który próbowałem zatwierdzić, otrzymując błąd krytyczny:
Chciałem rozwiązać problem, taki jak żądania OP, a nie tylko wyłączyć flagę git, więc znalazłem ten artykuł, który zawiera polecenie Perla, aby rozwiązać problem na podstawie pliku.
Więc dla mojego błędu .htaccess powyżej, uruchomiłem następujące polecenie:
Flagi -p, -i i -e (pie) można łączyć, aby umożliwić edycję plików za pomocą Perla z wiersza poleceń. W tym przypadku zastąpienie wszystkich znalezionych \ r \ n \ n.
źródło