Jak porównać dwa pliki poza repozytorium za pomocą git


Odpowiedzi:


214

gitdiff jest bardziej funkcjonalny niż standardowy unix diff. Często chcę to zrobić, a ponieważ to pytanie jest wysoko oceniane w Google, chcę, aby ta odpowiedź się pojawiła.

To pytanie: jak używać git diff --color-wordspoza repozytorium Git?

Pokazuje, jak używać git do porównywania plików, w których co najmniej jeden z nich nie znajduje się w repozytorium, używając --no-index:

git diff --no-index file1.txt file2.txt

Nie ma znaczenia, który z nich jest śledzony przez git, a który nie - jeden lub oba mogą zostać prześledzone, np .:

$ date > x
$ sleep 2
$ date > y
$ git diff --color-words --no-index x y
diff --git a/x b/y
index 6b10c7c..70f036c 100644
--- a/x
+++ a/y
@@ -1 + 1 @@
Wed Jun 10 10:57:45|10:57:47 EDT 2013

Koloru nie można tutaj pokazać, więc w przykładzie oddzieliłem zmiany pionową kreską.


14
Jeśli chcesz, aby to zachowanie było domyślne, możesz dodać alias do swojego .bashrcpliku (lub cokolwiek innego):alias diff="git diff --no-index"
przeciwdziałanie

1
Do Twojej wiadomości: W Git dla Windows był błąd (# 2123) polegający na tym, że „--no-index” nie było przestrzegane. Zostało to naprawione w Git dla systemu Windows w wersji 2.21.0 (26 lutego 2019 r.).
StackzOfZtuff

Co oznacza wiersz „index 6b10c7c..70f036c 100644”? Porównuję 2 binaria, różnią się, ale to jedyny wiersz z różnicą ...
Lukas Salich

cześć @LukasSalich wygląda na to, że format linii może być udokumentowany przez git (np .: git-scm.com/docs/diff-format ) plik diff gita nie próbuje porównywać plików binarnych afaik, więc zgaduję, że ta linia oznacza, że ​​się różnią , dwa SHA, na których zidentyfikowano zmianę, a następnie uprawnienia do pliku.
Kyle Burton,

3

diff -u

da podobne, zunifikowane wyjście kontekstowe do diff gita.


1
Nie zapewnia jednak ładnego kolorowania ani korzystania z pagera.
Xiong Chiamiov

Nie pozwala też na ładną różnicę słów ( git diff --word-diff).
Stefan van den Akker

0

Po prostu użyj polecenia diff:

diff file1.ext file2.ext

2
Hmkay, próbowałem tego, ale moim zdaniem wyjście było po prostu nonsensem ... Może się myliłem ...
Cedric Reichenbach

możesz uruchomić jakieś narzędzie GUI, które zapewni lepszy widok, takie jak gvimdiff, kompare lub podobne
Eugene Sajine
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.