W Git, jak wyłączyć ostrzeżenie „LF zostanie zastąpione przez CRLF”


153

Z Git, kiedy używasz autocrlf = trueflagi, ostrzeżenie jest nadal wyświetlane, gdy końce linii są zmieniane.

Rozumiem, do czego służy ostrzeżenie i jak wyłączyć flagę końca linii, ale jak wyłączyć samo ostrzeżenie?


Wszystkie odpowiedzi tutaj są przestarzałe - po wprowadzeniu gitattributes przez git. Safecrlf jest twoim przyjacielem, autocrlf nie jest! Proszę zobaczyć moją odpowiedź
Rusi

Odpowiedzi:


280

Możesz wyłączyć ostrzeżenie za pomocą

git config --global core.safecrlf false

(Spowoduje to wyłączenie ostrzeżenia, a nie samej funkcji).


czy wyłączenie ostrzeżenia uniemożliwi Gitowi zastąpienie LF przez crlf? @chronial
aidonsnous

3
@aidonsnous From git docs : Jeśli core.safecrlf jest ustawiony na „true” lub „warn”, git sprawdza, czy konwersja jest odwracalna dla bieżącego ustawienia core.autocrlf. Dla „prawdy” git odrzuca nieodwracalne konwersje; dla "warn", git wyświetla tylko ostrzeżenie, ale akceptuje nieodwracalną konwersję. Jeśli nie musisz odrzucać nieodwracalnych konwersji, ustawienie parametru core.safecrlf na false pomija ostrzeżenie, ale nadal dokonuje automatycznej konwersji.
Danny Libin,

5

Powinieneś użyć core.autocrlf inputi core.eol input. Lub po prostu nie pozwól autocrlf falsegitowi w ogóle zmieniać końcówek linii i pozbyć się podświetlania crlf w różnicach itp core.whitespace cr-at-eol. Za pomocą .

Mam nadzieję że to pomoże


Zwykle chcesz, aby twoje skrypty BAT kończyły się i były zatwierdzone przez CRLF, a skrypt SH z LF.
Sandburg

0

Szukasz core.whitespace opcji (zobacz git config --helpszczegóły).

Możesz ustawić tę opcję w następujący sposób:

$ git config core.whitespace cr-at-eol

0

Użyłem w ten sposób:

Zapisz swoje bieżące pliki w Git, aby nic nie zostało utracone.

git add . -u
git commit -m "Saving files before refreshing line endings"

Usuń każdy plik z indeksu Gita.

git rm --cached -r .

Przepisz indeks Git, aby zebrać wszystkie nowe zakończenia linii.

git reset --hard

Dodaj z powrotem wszystkie zmienione pliki i przygotuj je do zatwierdzenia. To Twoja szansa, aby sprawdzić, które pliki, jeśli w ogóle, pozostały niezmienione.

git add .
# It is perfectly safe to see a lot of messages here that read
# "warning: CRLF will be replaced by LF in file."

Zatwierdź zmiany w swoim repozytorium.

git commit -m "Normalize all the line endings"

https://help.github.com/articles/dealing-with-line-endings/


13
Myślę, że OP starał się już nie widzieć tych ostrzeżeń. Nie normalizuj wszystkich zakończeń linii.
Mike Cluck

git rm --cached -r . && git reset --hardwydaje się działać, dzięki
Shanimal

0

Co zabawne, zastosowałem obie konfiguracje, jak wyjaśniono tutaj, a mój plik .gitconfig zawierał te 2 wiersze:

[core]
       autocrlf = false
       whitespace = cr-at-eol

Ale dostałem ostrzeżenie. Teraz, żeby spróbować, wykomentowałem obie linie i ostrzeżenie faktycznie zniknęło. Nie mam pojęcia, dlaczego stawiam je na pierwszym miejscu, jednak ...


0

Ustawienie „core.safecrlf false” działa. Jednak po zmianie wartości na „prawda” Wynik zmienia się z „ostrzeżenia” na „fatalny”, jak pokazano poniżej.

$ git add -A
warning: LF will be replaced by CRLF in .gitignore.
The file will have its original line endings in your working directory

$ git config --global core.safecrlf false

$ git reset

$ git config --global core.safecrlf true

$ git add -A
fatal: LF would be replaced by CRLF in .gitignore

$

W ostatnim gicie lepiej używać gitattributes niż autocrlf. Zobacz moją odpowiedź . Wszystkie odpowiedzi (w tym pytaniu) są stare i nieaktualne
Rusi
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.