2015-09-03 14 views
7

Pracuję w środowisku roboczym tylko dla systemu Windows, używając programistów używających różnego rodzaju narzędzi do edycji plików. Używamy .git wraz ze stosem atlasu do wersji naszego kodu. Podoba mi się prawie wszystko.Jak zmienić zachowanie statusu git wyświetlając zmodyfikowane pliki, które ostatecznie nie są zatwierdzone?

Niedawno zakończyłem walkę o długą i ciężką walkę, aby objąć głowę, w jaki sposób i dlaczego git interpretuje zakończenia linii i co robi core.autocrlf. Zdecydowaliśmy się użyć core.autocrlf true i wszystko jest prawie w porządku.

chciałbym wiedzieć, jak zmienić to zachowanie git status:

  • Mam plik z CRLF zakończeń linii.
  • zmienić końca linii do LF

    $ git status 
    On branch somebranch 
    Changes not staged for commit: 
        (use "git add <file>..." to update what will be committed) 
        (use "git checkout -- <file>..." to discard changes in working directory) 
    
    modified: Src/the_file_i_changed_to_LF.js 
    
  • Ale potem ...

    $ git commit -a 
    warning: LF will be replaced by CRLF in Src/the_file_i_changed_to_LF.js. 
    The file will have its original line endings in your working directory. 
    On branch somebranch 
    nothing to commit, working directory clean 
    

do tego:

  • Mam plik z CRLF zakończenia linii.
  • zmienić końca linii do LF

    $ git status 
    On branch somebranch 
    nothing to commit, working directory clean 
    
  • które ma sens, ponieważ nic nie dostanie popełnione w każdym razie.

Czy to możliwe?

Uważam, że możliwy duplikat nie zawiera odpowiedzi, której szukam. Chciałbym podkreślić, że robię (myślę), że wiem, co robi moje ustawienie core.autocrlf true i chcę zachować to w ten sposób. Interesuje mnie albo nie wykrywanie zmian w git status, które i tak nie zostaną zatwierdzone, ani zrozumienie, dlaczego nie jest to możliwe.

Odpowiedz

1

Po ustawieniu core.autocrlf true wszystkie pliki w katalogu roboczym będą miały koniec linii CRLF (mniej niż faktyczne zakończenie linii w repozytorium). Dla większości użytkowników systemu Windows jest to wystarczająco dobre.

Z Twojego pytania Rozumiem, że chcesz mieć pliki katalogów roboczych (= plik lokalny) z LF. Tak więc tutaj powinieneś używać core.autocrlf input. To da ci dokładne zakończenie linii jak w repozytorium (ale nadal upewni się, że wszystkie check-in'y są wykonane z LF).

Przeczytaj więcej na temat różnicy wartości true, false, input w tym answer.

Powiązane problemy