Chcę znaleźć różnice między plikiem, który mam w moim lokalnym repozytorium, a tym, co jest w pliku origin master
.
Wiem, że tak git diff
, ale chcę go tylko odizolować do tego konkretnego pliku.
Dla uproszczenia załóżmy, że plik ma nazwę file1.txt
i ma lokalną ścieżkę do pliku =, [local_path]
aw źródle ma ścieżkę do pliku = [remote-path]
.
Jakie byłoby polecenie git, które muszę wpisać?
EDYCJA: Dziękuję wszystkim za wkład, który był bardzo wnikliwy. Dla tych, którzy używają Eclipse (którym jestem i powinienem był wcześniej powiedzieć) właśnie dowiedziałem się, że możesz po prostu kliknąć prawym przyciskiem myszy -> Porównaj z -> Oddział, Tag lub Odniesienie -> wybierz odpowiednią wersję i gotowe.
Odpowiedzi:
Jeśli
[remote-path]
i[local-path]
są takie same, możesz to zrobićUwaga 1: Drugie polecenie powyżej porówna się z lokalnie przechowywaną gałęzią zdalnego śledzenia. Polecenie fetch jest wymagane do zaktualizowania gałęzi zdalnego śledzenia, aby była zsynchronizowana z zawartością zdalnego serwera. Możesz też po prostu zrobić
Uwaga 2:
master
w powyższych przykładach można zastąpić dowolną nazwą oddziałuźródło
git diff master:README.md -- README.md
git diff origin/master -- README.md
git fetch master
zamiast tego użyćgit fetch .
(pochodzenie / master też nie działało) Ale reszta działała dobrze.git fetch **origin**
.Aby wyświetlić różnice między plikiem zdalnym a plikiem lokalnym:
Aby zobaczyć różnice w innym kierunku:
Zasadniczo możesz różnicować dowolne dwa pliki w dowolnym miejscu za pomocą tej notacji:
Jak zwykle
ref1
iref2
mogą to być nazwy gałęzi, nazwa zdalna / nazwa gałęzi, zatwierdzanie SHA itp.źródło
Aby porównać lokalne repozytorium ze zdalnym, po prostu użyj poniższej składni:
źródło
W tym celu napisałem skrypt bash:
W powyższym skrypcie pobieram zdalną gałąź główną (niekoniecznie gałąź DOWOLNĄ) do
FETCH_HEAD
, a następnie tworzę listę tylko mojego zmodyfikowanego pliku i porównuję zmodyfikowane plikigit difftool
.Istnieje wiele
difftool
obsługiwanych przez git, skonfigurowałemMeld Diff Viewer
dla dobrego porównania GUI.Z powyższego skryptu mam wcześniejszą wiedzę o zmianach wprowadzonych przez inne zespoły w tym samym pliku, zanim przejdę do etapów git,
untrack-->staged-->commit
które pomogą mi uniknąć niepotrzebnego rozwiązania konfliktu scalania ze zdalnym zespołem lub utworzenia nowego oddziału lokalnego i porównania i scalenia w głównym oddziale.źródło
Wypróbowałem kilka rozwiązań, ale myślę, że jest to łatwy sposób (jesteś w folderze lokalnym):
Następnie porównałeś numer ostatniego gita lokalnego i zdalnego gita ...
źródło
Pełna odpowiedź na pierwotne pytanie, które mówiło o możliwej innej ścieżce lokalnej i zdalnej, znajduje się poniżej
git fetch origin
git diff master -- [local-path] origin/master -- [remote-path]
Zakładając, że ścieżka lokalna to docs / plik1.txt, a ścieżka zdalna to docs2 / plik1.txt, użyj
git diff master -- docs/file1.txt origin/master -- docs2/file1.txt
Jest to dostosowane ze strony pomocy GitHub tutaj i powyższej odpowiedzi Code-Apprentice
źródło