Te komunikaty są spowodowane nieprawidłową wartością domyślną core.autocrlfw systemie Windows.
Koncepcja autocrlfpolega na transparentnym przetwarzaniu konwersji zakończeń linii. I robi to!
Zła wiadomość : wartość należy skonfigurować ręcznie.
Dobra wiadomość : należy to zrobić JEDEN czas na instalację gita (możliwe jest również ustawienie projektu).
Jak autocrlfdziała :
core.autocrlf=true: core.autocrlf=input: core.autocrlf=false:
repo repo repo
^ V ^ V ^ V
/ \ / \ / \
crlf->lf lf->crlf crlf->lf \ / \
/ \ / \ / \
Tutaj crlf= marker końca linii w stylu win = = styl lfuniksowy (i Mac OSX).
( crnie wpływa na pre-osx dla żadnej z trzech powyższych opcji)
Kiedy pojawia się to ostrzeżenie (w systemie Windows)
- autocrlf= truejeśli masz styl uniksowy lfw jednym ze swoich plików (= RZADKO),
- autocrlf= inputjeśli masz styl wygrywający crlfw jednym ze swoich plików (= prawie ZAWSZE),
- autocrlf= false- NIGDY!
Co oznacza to ostrzeżenie
Ostrzeżenie „ LF zostanie zastąpione przez CRLF ” mówi, że (mając autocrlf= true) stracisz swój LF w stylu uniksowym po cyklu sprawdzania zmian (zostanie zastąpiony przez CRLF w stylu Windows). Git nie oczekuje, że użyjesz LF w stylu uniksowym pod Windows.
Ostrzeżenie „ CRLF zostanie zastąpione przez LF ” mówi, że (mając autocrlf= input) stracisz swój CRLF w stylu Windows po cyklu sprawdzania zmian (zostanie zastąpiony przez LF w stylu unixowym). Nie używaj inputpod oknami.
Jeszcze inny sposób pokazania, jak autocrlfdziała
1) true: x -> LF -> CRLF
2) input: x -> LF -> LF
3) false: x -> x -> x
gdzie x to CRLF (styl Windows) lub LF (styl unix), a strzałki oznaczają
file to commit -> repository -> checked out file
Jak naprawić
Wartość domyślna dla core.autocrlfjest wybierana podczas instalacji gita i przechowywana w ogólnosystemowej gitconfig ( %ProgramFiles(x86)%\git\etc\gitconfig). Są też (kaskadowanie w następującej kolejności):
- „globalny” (na użytkownika) gitconfig w ~/.gitconfig, jeszcze inny
- „globalny” (na użytkownika) gitconfig w $XDG_CONFIG_HOME/git/configlub
- $HOME/.config/git/configi
„lokalny” (na repo) gitconfig .git/configw działającym katalogu.
Napisz więc git config core.autocrlfdziałający katalog, aby sprawdzić aktualnie używaną wartość i
- dodaj autocrlf=falsedo całego systemu gitconfig # rozwiązanie dla systemu
- git config --global core.autocrlf false # rozwiązanie dla użytkownika
- git config --local core.autocrlf false # rozwiązanie dla projektu
Ostrzeżenia
- git configustawienia można zastąpić gitattributesustawieniami.
- crlf -> lfkonwersja następuje tylko podczas dodawania nowych plików, crlfnie ma to wpływu na pliki już istniejące w repozytorium.
Morał (dla Windows):
- use core.autocrlf= truejeśli planujesz używać tego projektu również pod Uniksem (i nie chcesz konfigurować swojego edytora / IDE do używania zakończeń linii uniksowych),
- use core.autocrlf= falsejeśli planujesz używać tego projektu tylko pod Windows ( lub skonfigurowałeś swój edytor / IDE do używania zakończeń linii uniksowych),
- nigdy nie używaj core.autocrlf= inputchyba, że masz ku temu dobry powód ( np. jeśli używasz narzędzi unixowych pod Windows lub jeśli masz problemy z plikami makefile),
PS Co wybrać, instalując git dla Windows?
Jeśli nie zamierzasz używać żadnego z projektów w systemie Unix, nie zgadzaj się z domyślną pierwszą opcją. Wybierz trzeci ( Checkout as-is, commit as-is ). Nie zobaczysz tej wiadomości. Zawsze.
PPS Moje osobiste preferencje to konfiguracja edytora / IDE do używania zakończeń w stylu uniksowym i ustawienie core.autocrlfna false.