2013-05-15 16 views

Odpowiedz

8

Spójrz na hash (lub tag) o scaleniu commit (commit, który ma wielu rodziców) i zrobić:

git diff hash hash^1 hash^2 

Będzie wyjście 3 way-diff zmian.

hash^ (lub hash^1) odwołuje się do pierwszy rodzic commit hash
hash^2 Materiały referencyjne sekund dominujących commit hash

+0

_ Dodatkowo, dzięki czemu 'git diff --cc hash hash^1 hash^2' sformatuje diff w ten sam sposób, w jaki wyświetla go' gitk'. Nie jestem pewien, który format wyjściowy jest preferowany przez OP, choć ..._ Właściwie, nieważne ... 'git diff' robi to domyślnie, wydaje się, kiedy dajesz mu trzy hashe ... – twalberg

+1

dziękuję! utworzono alias: 'dc ="! f() {HASH = 1 $, shift 1; git d --cc $ HASH $ HASH^1 $ HASH^2 $ @;}; f "' – brauliobo

+0

Kiedy używam tej linii, Dostaję 'fatal: niejednoznaczny argument 'hash': nieznana wersja lub ścieżka nie w drzewie roboczym. Użyj "-", aby oddzielić ścieżki od wersji, na przykład: git [ ...] - [ ...]> ' – HelloGoodbye

1

Jeśli używasz standardowego narzędzia gitk i klikniesz na zatwierdzenie scalania, w lewym dolnym okienku wyświetlane są rozwiązania konfliktu.

+0

jak gitk robi? – brauliobo

+0

@brauliobo Założę się, wykonując 'git diff hash hash^1 hash^2' gdzie' hash' jest hashem zatwierdzenia merge. –

Powiązane problemy