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.