Pomyślałem, że to pytanie (z tytułu) może dotyczyć użycia git diff na dwóch plikach, które niekoniecznie znajdują się w repozytorium. Zauważyłem, że służy do tego flaga --no-index, np. git diff --no-index --word-diff old_file.txt new_file.txt(--Word-diff podkreśla zmiany według słowa, a nie tylko wiersza, co jest bardzo pomocne w przypadku długiego tekstu).
Pat
Odpowiedzi:
139
Podaj ścieżki jawnie:
git diff HEAD:full/path/to/foo full/path/to/bar
Sprawdź --find-renamesopcję w git-diffdokumentach .
Chcę wspomnieć, że możesz porównać dowolne dwa pliki używając, git diff <path> <path>nawet jeśli nie znajdują się w repozytorium git.
mitenka
1
@mitenka Nie sądzę, że to prawda. Jeśli spojrzysz na git diff --help, zobaczysz, że jedyne wzorce obsługiwane dla dwóch plików to git diff [<options>] --no-index [--] <path> <path>. git diff a bdopasowuje tylko wzorce zatwierdzeń, a nie pliki.
Doug
@Doug Oto cytat z polecenia pomocy, o którym wspomniałeś, git-scm.com/docs/git-diff : Pokaż zmiany [...] między dwoma plikami na dysku.
mitenka
@mitenka pomoc mówi, jeśli nie używasz '--no-index', nie porównuje plików; twój komentarz powinien być osobną odpowiedzią; to nieprawda i nie dotyczy tej odpowiedzi.
Doug
1
@Doug Dziękuję za twoją opinię. Oto cytat z pomocy, do której się odwołujesz: Możesz pominąć tę --no-indexopcję, uruchamiając polecenie w drzewie roboczym kontrolowanym przez Gita i co najmniej jedna ze ścieżek wskazuje poza drzewem roboczym lub podczas uruchamiania polecenia poza drzewem roboczym kontrolowanym przez Gita .
mitenka
81
Uważam, że używanie --no-indexjest tym, czego szukasz:
git diff [<options>]--no-index [--]<path><path>
jak wspomniano w podręczniku git:
Ta forma służy do porównania podanych dwóch ścieżek w systemie plików. Możesz
pominąć tę --no-indexopcję, uruchamiając polecenie w drzewie roboczym kontrolowanym przez Gita, a przynajmniej jedna ze ścieżek wskazuje poza drzewem roboczym lub podczas uruchamiania polecenia poza drzewem roboczym kontrolowanym przez Git.
@swe to zdecydowanie przydatna odpowiedź, ale OP wyraźnie stwierdził, że plik jest w HEAD, co oznacza, że znajduje się w indeksie git. Zaakceptowana odpowiedź bezpośrednio odnosi się do pytania. Również zaakceptowana odpowiedź miała 6 lat
Michael Delgado
3
Może to nie pomogło OP, ale właśnie tego szukałem.
thislooksfun
1
To odpowiada na pytanie zamieszczone w tytule, jeśli unikałeś tego w Internecie.
Merlin
Dzięki za odpowiedź w tytule ... dlatego tu przyjechałem.
grek40
Cieszę się, że to pomogło.
mh sattarian
3
Jeśli używasz narzędzia Tortoise Git, możesz kliknąć plik prawym przyciskiem myszy i uzyskać różnicę przez: Kliknięcie prawym przyciskiem myszy na pierwszym pliku i poprzez podmenu tortoisegit wybierz opcję "Porównaj później" Następnie na drugim pliku możesz również kliknąć prawym przyciskiem myszy , przejdź do podmenu tortoisegit, a następnie wybierz „Porównaj z twoją nazwą pliku.txt”
git diff --no-index --word-diff old_file.txt new_file.txt
(--Word-diff podkreśla zmiany według słowa, a nie tylko wiersza, co jest bardzo pomocne w przypadku długiego tekstu).Odpowiedzi:
Podaj ścieżki jawnie:
git diff HEAD:full/path/to/foo full/path/to/bar
Sprawdź
--find-renames
opcję wgit-diff
dokumentach .Kredyt: twaggs .
źródło
git diff <path> <path>
nawet jeśli nie znajdują się w repozytorium git.git diff --help
, zobaczysz, że jedyne wzorce obsługiwane dla dwóch plików togit diff [<options>] --no-index [--] <path> <path>
.git diff a b
dopasowuje tylko wzorce zatwierdzeń, a nie pliki.--no-index
opcję, uruchamiając polecenie w drzewie roboczym kontrolowanym przez Gita i co najmniej jedna ze ścieżek wskazuje poza drzewem roboczym lub podczas uruchamiania polecenia poza drzewem roboczym kontrolowanym przez Gita .Uważam, że używanie
--no-index
jest tym, czego szukasz:jak wspomniano w podręczniku git:
źródło
Jeśli używasz narzędzia Tortoise Git, możesz kliknąć plik prawym przyciskiem myszy i uzyskać różnicę przez: Kliknięcie prawym przyciskiem myszy na pierwszym pliku i poprzez podmenu tortoisegit wybierz opcję "Porównaj później" Następnie na drugim pliku możesz również kliknąć prawym przyciskiem myszy , przejdź do podmenu tortoisegit, a następnie wybierz „Porównaj z twoją nazwą pliku.txt”
źródło
Używając PhpStorm, po prostu kopiuję kod poprzedniej zmiany i porównuję go z aktualną wersją za pomocą wbudowanego narzędzia "porównaj ze schowkiem".
źródło