2012-10-13 21 views
23

Mam stronę z repozytorium git. Sklonowałem repozytorium tak, żebym mógł rozwinąć się w jednym katalogu, a następnie przejść do repozytorium, a następnie pobrać katalog live/prod (byłby zainteresowany propozycjami lepszego sposobu na zrobienie tego, jeśli taki istnieje, ale to jest poza zakres tego pytania).diff zwraca cały plik identycznych plików

zrobiłem następujące w katalogu żywych naciskać wszystkie moje najnowsze zmiany:

git add . 
git commit -a // added a message 
git push 

Potem wziął się następujące polecenia w katalogu dev:

git clone [email protected]:user/repo.git 

Potem otwarto dwa pliki, prod /root/test.php i dev/root/test.php i wyglądały identycznie. Jednak, gdy zrobiłem następujące polecenie diff, jest wyprowadzany cały plik:

diff prod/root/test.php dev/root/test.php 

Jestem tak zdezorientowany, dlaczego diff będzie wyjście cały plik, jeśli są identyczne ... Próbowałem również googlowania to i nie można znaleźć nikogo innego z tym problemem. Może to problem z końcówką linii lub problem z kodowaniem znaków, w którym wyglądają tak samo, ale w rzeczywistości są różne i git/bitbucket konwertuje je, gdy naciskasz na repo? To jedyna rzecz, którą mogę wymyślić ... Albo to, albo brakuje mi czegoś naprawdę oczywistego.

Oto wynik:

1,3c1,3 
< <? 
< echo '<p>Hello world!</p>'; 
< ?> 
--- 
> <? 
> echo '<p>Hello world!</p>'; 
> ?> 

Odpowiedz

27

Wydaje się, że to kwestia białych znaków, aby uniknąć ich w przyszłości, można skonfigurować Git, aby je normalizować.

systemu Windows i UNIX nie używać tej samej linii kończącej się, aby zapobiec konfliktom dzieje w oparciu o te, należy skonfigurować jesteś git config w ten sposób:

  • systemu Windows: git config --global core.autocrlf true
  • Unix: git config --global core.autocrlf input

Następny, aby upewnić się, że tylko popełnić z białych idealnych zasad, można ustawić config Opti pod adresem:

git config --global core.whitespace trailing-space,space-before-tab,indent-with-non-tab 
2

To zazwyczaj oznacza końca linii są różne. Większość różnych programów pozwala ignorować różnice w końcach linii. Czy twój pozwala na to?

12

Najprawdopodobniej to zakończenie linii. Wypróbuj git diff --ignore-space-at-eol. I dla zwykłego (nie git) diff to diff -b.

Powiązane problemy