2012-12-20 17 views
57

przepraszam jeśli to pytanie istnieje, ja zaskakująco nie mogli go znaleźć:/git diff dwóch plików o tej samej gałęzi, samych popełnić

Jak mogę wykonać do git diff między dwa pliki w tej samej gałęzi & sam popełnił?

tj git diff fileA.php fileB.php

(najlepiej z łatwym do odczytania kodowanie kolorystyczne że git oferty .... lub podobny do tego, co robi program BeyondCompare!)

Odpowiedz

50

Nie trzeba git Do tego właśnie użyj diff fileA.php fileB.php (lub vimdiff, jeśli chcesz porównać obok siebie)

+13

'vimdiff' na zwycięstwo! Dzięki! –

+12

Może to działać, ale nie jest to różnica git. To zupełnie inny format wyjściowy. – daboross

+8

To nie odpowiada na oryginalne pytanie. – DylanYoung

2

Jeśli chcesz zmienić dwa pliki lokalne w tym samym katalogu, użyj diff.

diff fileA.php fileB.php 
+0

To nie odpowiada na oryginalne pytanie – DylanYoung

+0

http://stackoverflow.com/questions/6877238/what-is-the-windows-equivalent-of- -diff-command – morewry

-2

Po prostu użyj zwykłego diff.

diff -Nua fileA.php fileB.php 
+7

-1 ponieważ "you can not" jest niepoprawne (patrz: http://stackoverflow.com/a/13965200/968531) – NobodysNightmare

9

Jeśli pliki, które chcesz porównać są w kopii roboczej, można użyć po prostu diff jak wskazano przez innych, jednak jeśli pliki są w jakiejś rewizji można wybrać wersję dla każdego pliku

git diff <revision_1>:<file_1> <revision_2>:<file_2> 

jak wspomniano tutaj: https://stackoverflow.com/a/3343506/1815446

W twoim przypadku (podając tę ​​samą wersję dla obu plików):

git diff <revisionX>:fileA.php <revisionX>:fileB.php 
+0

Uwaga: A [wersja] (https://git-scm.com/book/en/v2/Git-Tools-Revision-Selection # _revision_selection) może być 'HEAD ~ 2', SHA-1, nazwa oddziału itp. – ma11hew28

+0

To działało dla mnie, tylko porównywanie nazw plików z dwóch różnych katalogów : 'git diff - only-only HEAD: dir1 HEAD: dir1_backup' działa po' git add' obu katalogów. –

3

aby regularnie diff gnu wyglądają bardziej jak git diff, polecam te parametry:

diff -burN file_or_dir1 file_or_dir2 

(gdzie -b ignorować spacje, -u unified diff, -r rekurencyjne, -N treat brakujące pliki jako /dev/null).

Działa wspaniale, ale nadal nie ma kolorów i automatyczne wyświetlanie stron w trybie git jest praktycznie nieobecne. Jeśli chcesz naprawić obu (ja), zainstalować colordiff i używać go tak:

colordiff -burN file_or_dir1 file_or_dir2 | less -R 

Daje moc i interfejs, który jest bardzo zbliżony do rzeczywistego git diff.

+4

-1 ponieważ "nie możesz" jest niepoprawne (patrz: http://stackoverflow.com/a/13965200/968531) – NobodysNightmare

+0

Usuń "nie możesz", dodaj instrukcje dotyczące instalacji colordiff i może to być OK odpowiedź na oryginalne pytanie. – DylanYoung

146

Jeśli chcesz użyć git diff na dwóch dowolnych plikach, możesz użyć git diff --no-index <file_a> <file_b>. Oba pliki nie muszą być śledzone w git, aby to działało.

+15

+1, ponieważ odpowiada na pytanie pierwsze (niezależnie od "dlaczego to zrobiłeś" ... mogą być powody) – NobodysNightmare

+17

+1 git diff jest dużo bardziej czytelny niż zwykły diff. – daboross

+13

'--word-diff' zwraca uwagę na zmiany wprowadzone w słowie, a nie tylko na linii – user3148949

Powiązane problemy