Chcę mieć różnicę wszystkich zmian w gałęzi, która nie jest jeszcze scalona z wzorcem.
Próbowałem:
git diff master
git diff branch..master
git diff branch...master
Jednak w każdym z tych przypadków różnica zawiera zawartość w master, która nie została jeszcze włączona do mojej gałęzi.
Czy istnieje sposób na zrobienie różnicy między moją gałęzią a wzorcem, który wyklucza zmiany w wzorcu, które nie zostały jeszcze włączone do mojej gałęzi?
git diff master..branch
. Możesz go skrócić do,git diff master..
jeśli jesteś w oddziale.r1..r2
Składnia jest skrótem^r1 r2
, który oznacza „pokaż mi, że wszystko pochodzi odr2
i nie jest osiągalny zr1
”.git help gitrevisions
zawiera informacje na temat różnych składni, których możesz użyć....
składnigit diff
. Twój komentarz jest błędny, @jszakmeister, ponieważ zakresy wersji opisane wgitrevisions
nie mają z tym nic wspólnegogit diff
. Różnica porównuje dwa punkty w historii, nie może działać z zakresem.git diff
działa to inaczej niż inne polecenia ... to frustrujące. :-(Odpowiedzi:
Podstawa seryjnej jest punkt, w którym
branch
odbiega odmaster
.Git diff obsługuje w tym celu specjalną składnię:
Nie możesz zamienić stron, bo wtedy dostaniesz drugą gałąź. Chcesz wiedzieć, co się zmieniło,
branch
odkąd odeszłomaster
, a nie na odwrót.Luźno powiązane:
Zauważ, że
..
i...
składnia nie ma takiej samej semantyki, jak w innych narzędziach Git. Różni się od znaczenia określonego wman gitrevisions
.Cytowanie
man git-diff
:źródło
$ git diff master...branch
wyprodukowanefatal: ambiguous argument 'master...branch': unknown revision or path not in the working tree.
- czy jest to polecenie zależne od wersji?branch
. Zdecydowałem się trzymać nazwy, którą OP wybrał w pytaniu. Jeśli chcesz korzystać z bieżącej gałęzi, wymienićbranch
zHEAD
.git diff master...
aby uniknąć określania gałęzi (bieżąca zostanie pobrana).devel
, @ChrisGuest? Prawdopodobnie Git utworzył dla Ciebie gałąź podczas realizacji transakcji, jako lokalną kopię zdalnego oddziału (zazwyczajorigin/devel
). Gdyby tak było,git diff origin/devel...bugfix/API-353-api-allows-database-access-when
działałby jeszcze przed kasą.Oto, co zadziałało dla mnie:
Pokazuje tylko zmiany między moją aktualnie wybraną gałęzią lokalną a zdalną gałęzią główną i ignoruje wszystkie zmiany w mojej gałęzi lokalnej, które pochodzą z zatwierdzeń scalających.
źródło
git cherry origin/master
.master
być może zmieniono bazę zestawów zatwierdzeń spod ciebie.Jak zauważyli również John Szakmeister i VasiliNovikov, najkrótszym poleceniem, aby uzyskać pełny różnicę z perspektywy mistrza w twojej gałęzi, jest:
To używa twojej lokalnej kopii master.
Aby porównać użycie określonego pliku:
Przykład danych wyjściowych:
źródło