Powiedzmy, że sklonowałem repozytorium i zacząłem modyfikować pliki. Wiem, że jeśli mam lokalne niezatwierdzone zmiany, mogę wykonać git diff test.txt
różnicę w następujący sposób i pokaże mi różnicę między bieżącą lokalną HEAD a zmodyfikowanymi, niezatwierdzonymi zmianami w pliku. Jeśli zatwierdzę te zmiany, mogę porównać je z oryginalnym repozytorium za pomocągit diff master origin/master
Ale czy istnieje sposób na porównanie lokalnych zmian z oryginalnym repozytorium na serwerze przed ich zatwierdzeniem lokalnie? Próbowałem różnych permutacji git diff --cached master origin/master
bez powodzenia.
Odpowiedzi:
Biorąc pod uwagę, że zdalne repozytorium zostało buforowane za pośrednictwem
git fetch
, powinno być możliwe porównanie z tymi zatwierdzeniami. Spróbuj wykonać następujące czynności:źródło
git diff master origin/master
, nadal porównywałem z wersją zatwierdzoną (oczywiste z perspektywy czasu). Ale pominięcie wzorca porównuje teraz lokalne zmiany z wersją pobraną.origin master
i gdzie indziejorigin/master
. Nadal jest do zrobienia, IMHO.git diff origin/master
zwrotówfatal: ambiguous argument 'origin/master': unknown revision or path not in the working tree.
istnieje na początku, np.git fetch origin master
Działa dobrze,Wiem, że to nie jest odpowiedź na dokładnie zadane pytanie, ale znalazłem to pytanie, szukając porównania pliku w gałęzi z niezatwierdzonym plikiem lokalnym i pomyślałem, że udostępnię
Składnia:
Przykłady:
(Dzięki Ericowi Boehsowi za sposób, aby nie musieć dwukrotnie wpisywać nazwy pliku)
źródło
commit-ish
i separatora dwukropka. Dokumentacja na git-diff chyba o tym nie wspomina. Używałem go tak długo, że nie pamiętam, gdzie go znalazłem. Prawdopodobnie przykłady innych poleceń dotyczące innych poleceń i właśnie z nimi eksperymentowałemgit-diff
. Obawiam się, że inna odpowiedźcommit-ish
jest najlepsza, jaką mogę w tej chwili wymyślić.git diff master:./ -- README.md
. W ten sposób nie musisz wpisywaćREADME.md
dwa razy i możesz łatwiej dodać go do aliasu.git diff master: -- README.md
./
/dev/null
Aby zobaczyć niestopniowe (nie dodane) zmiany w istniejących plikach
git diff
Pamiętaj, że to nie śledzi nowych plików. Aby zobaczyć etapowe, niezatwierdzone zmiany
git diff --cached
źródło
Jeśli chcesz wizualnie porównać pliki, możesz użyć:
Uruchomi twoją aplikację porównującą automatycznie dla każdego zmienionego pliku.
PS: Jeśli nie ustawiłeś aplikacji porównującej , możesz to zrobić jak w poniższym przykładzie (ja używam Winmerge ):
źródło