2013-02-26 15 views
5

Mam komputer MacBook i pracuję w systemie Windows w programie Parallels VM. Mój rozwój jest głównie w Visual Studio, ale lubię używać Git z powłoką Macintosha (tak jak lepiej niż to, co jest dostępne dla Windowsa).Problem z zakończeniami linii między komputerem Mac a systemem Windows

Kiedy robię różnicę git, aby ustalić, co zmieniło się między zatwierdzeniami, otrzymuję przysłowiową linię kończącą "zmiany", które sprawiają, że git myśli, że znacznie więcej zmieniło się niż faktycznie.

Wiem, że jest to odwieczny problem i przeprowadziłem wiele badań z różnymi sugestiami od wielu osób, ale nie jestem w stanie rozwiązać tego problemu. Najbardziej obiecujące informacje znaleziono w tym SO Post, ale nie rozwiązało to mojego problemu.

Oto kilka istotnych linie z moim .gitconfig ...

[core] 
    autocrlf = false 
    safecrlf = false 

Również mam .gitattributes w katalogu głównym mojego repo, który zawiera tylko ...

* text eol=crlf 

Co czy mogę zrobić, aby Git przestał myśleć, że zmiany kończące linię są rzeczywistymi zmianami podczas wykonywania diff? Ponownie używam powłoki Mac do przeglądania plików systemu Windows, więc może to być częścią mojego problemu.

Dzięki!

+0

cię mieć udało się to rozwiązać? To nęka również mój zespół. Doprowadza mnie do szaleństwa. –

+0

Właśnie zacząłem używać Git od strony Windowsa. Nie byłem w stanie go rozwiązać. Ale używanie Git z Windowsa pozwala uniknąć problemu. –

+0

Jest szansa, że ​​rozwiązaliście to? –

Odpowiedz

1

pomocą narzędzia konwersji np Perl, perl -i -pne "s/\n/\r\n/g" pliku

lub unix2dos i dos2unix.

Zobacz także http://en.wikipedia.org/wiki/Newline#Conversion_utilities

Dla konfiguracji GIT zobaczyć inną odpowiedź: Force LF eol in git repo and working copy

+0

Dzięki za odpowiedź. Chcę zachować zakończenia linii CRLF w plikach systemu Windows, ale patrząc na różnice po stronie Mac z git, nie widzę innej linii kończącej się zmianą. Myślę, że narzędzie konwersji faktycznie zmieniłoby zakończenia linii. –

2

I alias gdiff do:

git diff -w origin/`git branch | sed --quiet "s/* \(.*\)/\1/p"` 

ale można po prostu zrobić:

git diff -w 
Powiązane problemy