env:
- System Windows 7
- msysgit
Wheng I git commit
, mówi:
warning: LF will be replaced by CRLF.
Czy ten ostrzegawczy ogon jest cofnięty?
Edytuję plik w systemie Windows, koniec linii wygląda CRLF
tak, jak na tym zdjęciu:
I git zmienia go na, LF
aby zatwierdzić repozytorium.
Więc myślę, że prawidłowe ostrzeżenie to:
warning: CRLF will be replaced by LF.
Odpowiedzi:
W zależności od używanego edytora, plik tekstowy z LF nie musiałby być zapisywany za pomocą CRLF: ostatni redaktorzy mogą zachować styl eol. Ale to ustawienie konfiguracji git nalega na zmianę tych ...
Po prostu upewnij się, że (tak jak tutaj polecam ):
W ten sposób unikniesz jakiejkolwiek automatycznej transformacji i nadal możesz określić je za pomocą
.gitattributes
pliku icore.eol
dyrektyw .Nie: korzystasz z systemu Windows i
git config
strona pomocy wspominaJak opisano w " git zastępując LF przez CRLF ", powinno to występować tylko przy pobieraniu (nie zatwierdzaniu), z
core.autocrlf=true
.Jak wspomniano w Xiaopeng jest odpowiedź , że ostrzeżenie jest taka sama, jak:
Jak wspomniano w
git-for-windows/git
numerze 1242 :Uwaga: Git 2.19 (wrzesień 2018), przy zastosowaniu
core.autocrlf
, podrobiony „LF zostaną zastąpione przez CRLF” Ostrzeżenie jest teraz stłumione .Jak słusznie zauważa quaylar , jeśli po zatwierdzeniu następuje konwersja, to tylko.
LF
To ostrzeżenie „
LF will be replaced by CRLF
” pochodzi z funkcji convert.c # check_safe_crlf () :Jest nazywany przez
convert.c#crlf_to_git()
, sam przezconvert.c#convert_to_git()
siebie nazywanyconvert.c#renormalize_buffer()
.A to ostatnie
renormalize_buffer()
jest wywoływane tylko przezmerge-recursive.c#blob_unchanged()
.Podejrzewam więc, że ta konwersja ma miejsce
git commit
tylko wtedy, gdy wspomniane zatwierdzenie jest częścią procesu scalania.Uwaga: w przypadku Git 2.17 (drugi kwartał 2018 r.) Czyszczenie kodu dodaje pewne wyjaśnienia.
Zob. Commit 8462ff4 (13 stycznia 2018) autorstwa Torsten Bögershausen (
tboegi
) .(Scalone przez Junio C Hamano -
gitster
- w zatwierdzeniu 9bc89b1 , 13 lutego 2018 r.)Zauważ, że regresja wprowadzona w 8462ff4 („
convert_to_git()
:safe_crlf/checksafe
staje sięint conv_flags
”, 2018-01-13, Git 2.17.0) z powrotem w cyklu Git 2.17 spowodowała, żeautocrlf
przepisanie spowodowało wyświetlenie komunikatu ostrzegawczego pomimo ustawieniasafecrlf=false
.Zobacz zatwierdzenie 6cb0912 (4 czerwca 2018) autorstwa Anthony'ego Sottile'a (
asottile
) .(Scalone przez Junio C Hamano -
gitster
- w zobowiązaniu 8063ff9 , 28 czerwca 2018 r.)źródło
core.autocrlf=true
będzie zawsze uzyskując w LF w repo i CRLF w pracy drzew IMHO (nawet przy użyciu Windows). Źródło: linkTAK, ostrzeżenie jest wstecz.
W rzeczywistości nie powinno to być nawet ostrzeżeniem. Ponieważ całe to ostrzeżenie mówi (ale niestety wstecz) to, że znaki CRLF w twoim pliku z końcami linii Windows zostaną zastąpione znakami LF przy zatwierdzeniu. Co oznacza, że jest znormalizowany do tych samych końcówek linii, które są używane przez * nix i MacOS.
Nic dziwnego się nie dzieje, jest to dokładnie takie zachowanie, jakiego normalnie byś chciał.
To ostrzeżenie w swojej obecnej formie to jedna z dwóch rzeczy:
;)
źródło
- Aktualizacja 9 lipca ---
Usunięto „Jest poprawny i dokładny”, jak skomentował @mgiuca
======
NIE . NIE jest to rozmowa o twoich plikach aktualnie z
CRLF
. Zamiast tego mówi o plikach z rozszerzeniemLF
.Powinien brzmieć:
To zdjęcie powinno wyjaśniać, co to znaczy.
źródło
Wszystko to zakłada
core.autocrlf=true
Oryginalny błąd:
Jaki błąd POWINIENEŚ przeczytać:
Wyjaśnienie tutaj :
Zasadniczo plik lokalny, który był poprzednio LF, będzie teraz miał lokalnie CRLF
źródło
git config --global core.autocrlf false
działa dobrze w przypadku ustawień globalnych.Ale jeśli korzystasz z Visual Studio, może być również konieczne zmodyfikowanie
.gitattributes
dla niektórych typów projektów ( np. Aplikacja biblioteki klas C # ):* text=auto
źródło
Po ustawieniu
core.autocrlf=true
otrzymywałem "LF zostanie zastąpiony przez CRLF" (uwaga nie "CRLF zostanie zastąpiony przez LF") kiedy edytowałemgit add
(a może to byłogit commit
?) Pliki w oknach w repozytorium (które używa LF), który został sprawdzony przed ustawieniemcore.autocrlf=true
.Zrobiłem nowe zakupy z
core.autocrlf=true
i teraz nie otrzymuję tych wiadomości.źródło
Jeśli korzystasz z programu Visual Studio 2017, 2019, możesz:
źródło
.gitconfig
lub.git/config
nie.gitignore
, który określa pliki, które mają być ignorowane przez git.Zrób tylko prostą rzecz:
źródło