2015-06-02 24 views
6

Jest tak wiele postów, ale nadal rozdzielczość nie jest jasna lub nie działa dla mnie. Problem wydaje się być dobrze znany.Force SourceTree ignoruje zakończenia linii w plikach git

  1. Sprawdziłem swój projekt w systemie unix i status gita pokazuje brak różnic. Ustawienia tutaj:

    bash-3.2$ git config core.autocrlf 
    false 
    bash-3.2$ git config core.whitespace 
    cr-at-eol 
    
  2. Ale lubię też użyć SourceTree (wskazując na tej samej bazie kodu Uniksa przez system NFS) dla niektórych udogodnień. Ustawienia powyższych atrybutów są dokładnie takie same.
    Ale SourceTree pokazuje kilka różnic w oparciu o czysto liniowe zakończenia.

Jaki jest proste rozwiązanie tego problemu?
W jaki sposób SourceTree nie ma ustawień w interfejsie użytkownika?

+0

Otwieranie plików z edytorem HEX i sprawdź, jakie są prawdziwe znaki końca linii. W systemie Windows powinieneś mieć CRLF (bez względu na liczby, to 2 znaki). Twój kod na maszynie Unix, wyciągnięty z git, może mieć LF. To robi różnicę. Git jest "wyszkolony", aby zobaczyć ten kod jako równy, SourceTree nie jest. –

+0

Nawet jeśli uruchomię "status git" z powłoki dostarczonej przez SourceTree, to pokazuje te różnice. W jaki sposób zmusić SourceTree do zignorowania tych różnic? – endless

+0

Nie mam pojęcia, jak skonfigurować SourceTree i czy jest to w ogóle możliwe. Ale jeśli wymienisz kod pomiędzy programistami z Git, możesz skonfigurować Gita do obsługi linii końcowych. –

Odpowiedz

3

Jest gear icon pobliżu sekcji Diff-ui app SourceTree które pokazują swoją różnicę plików, można kliknąć na nim i ustawić go na show whitespace lub ignore whitespace !! I googled dla godzin, a na końcu dostałem odpowiedź po wyszukaniu SourceTree odpowiednik polecenia git:

Git version <= 1.8.3.4: 
git diff --ignore-space-at-eol -b -w [commit] ... 

Git version >= 1.8.4: 
git diff --ignore-space-at-eol -b -w --ignore-blank-lines [commit] ... 

See the options definition below: 

--ignore-space-at-eol 
Ignore changes in whitespace at EOL. 

-b 
--ignore-space-change 
Ignore changes in amount of whitespace. This ignores whitespace at line end, 
and considers all other sequences of one or more whitespace characters to be 
equivalent. 

-w 
--ignore-all-space 
Ignore whitespace when comparing lines. This ignores differences even if one 
line has whitespace where the other line has none. 

[git version 1.8.4+]--ignore-blank-lines 
Ignore changes whose lines are all blank. 

The screen shot

Referencje:

The git command equivalent

Source Tree app settings