Porównanie commitów między branchami – git show-branch

Jeśli pracujecie z kilkoma branchami, można czasami się trochę pogubić. Gdzie to skomitowaliśmy? Czy zrobiliśmy merge’a na odpowiedni branch? Aby porównać dwa branche można skorzystać z jakiejś aplikacji z GUI do obsługi gita np. SourceTree. Aplikacja ładnie wizualizuje nasze branche, jednak albo pokazuje jeden, albo wszystkie. Co zrobić jak chcemy porównać commity między dwoma konkretnymi branchami? Z pomocą przychodzi Nam polecenie git show-branch.

git show-branch

Do pokazania jak to działa korzystam ze swojego przykładowego repozytorium. Załóżmy, że mamy branch master i feature. Chce zobaczyć jakimi commitami się różnią:

git show-branch master feature

Wynik tego polecenia może być na pierwszy rzut oka mało czytelny, ale po krótkim wyjaśnieniu wszystko stanie się jasne.

Wyjaśnię teraz linia po linii o co chodzi:

Pierwsze dwie linie to oznaczenia dla branchy. W nawiasie kwadratowym jest nazwa brancha. Dodatkowo wypisana jest wiadomość ostatniego commita z każdego brancha.
Pierwsza kolumna pierwszego wiersza – oznaczona wykrzyknikiem – to kolumna dla commitów z master.
Druga kolumna drugiego wiersza – oznaczona gwiazdką – to kolumna dla commitów z feature.
Gwiazdką zawsze jest oznaczany branch na którym aktualnie się znajdujemy. Widać, że ja to polecenie wykonałem na branchu feature.

Trzecia linia to separator między oznaczeniami, a commitami. Dalej mamy pokazane commity z obu branchy.

Pierwszy i drugi znak każdego kolejnego wiersza oznaczają do którego brancha należy ten commit.

Linia nr 4 – plus w pierwszej kolumnie – commit z mastera.
Linia nr 5 – gwiazdka w drugiej kolumnie – commit z feature.

itd.

Linia nr 8 – plus i gwiazdka – to jest nasz punkt wspólny. To jest commit, który znajduje się na obu branchach.

Dodatkowe opcje

Jeśli chcemy zobaczyć tylko commity nie istniejące na branchu podanym jako pierwszy:

git show-branch --topics feature master

git show-branch --topics

Polecenie nie pokazuje już commitów z brancha feature, tylko 1 commit z master, którego nie ma na branchu na którym jesteśmy. Na końcu oczywiście jest pokazany wspólny przodek.

Można również wyłączyć nazwę branchy przy commitach (ale nie przy oznaczeniach 🙂 ) opcją --no-name:

git show-branch --no-name feature master

git show-branch --no-name

Jak widać nazwy branchy są tylko w pierwszych dwóch liniach.

Podsumowanie

W ten oto łatwy sposób można zobaczyć jakimi commitami różnią się branche. Używając tego polecenia można porównać więcej niż 2 branche. Nie trzeba porównywać tylko lokalnych, można również porównywać branche zdalne.

Jeśli spodobał Ci się ten wpis i chcesz otrzymywać powiadomienia o nowych treściach dotyczących zagadnień związanych z Gitem, to zachęcam do subskrypcji mojego bloga.

1 thought on “Porównanie commitów między branchami – git show-branch

  1. Pingback: dotnetomaniak.pl

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *