Przejdź do treści

Narzędzia usprawniające prace z Git

Dziś obejrzałem prezentację Michała Lewandowskiego z Jinkubatora pt: Git — krok po kroku. (Link do prelekcji znajdziesz poniżej).

Zachęciło mnie to do napisania posta, aby przelać "na papier" słowa wypowiedziane.

Michał podczas prezentacji, przedstawił jak działa Git, w jaki sposób radzi on sobie z tworzeniem rewizji, branchy czy tagów. Na początku prezentacji Michał zareklamował narzędzie tig z którego miał często korzystać podczas weryfikacji stanu repozytorium, jednak chyba ze względu na stres korzystał z sourceTree 😄
Bardzo mnie zaciekawiło to narzędzie (tig oczywiście, nie sourceTree), zrobiłem więc szybki research i od razu postanowiłem, że się z nim zaprzyjaźnię.

Baner promujący artykuł

Tig

Kiedyś, gdy w ferworze rozglądałem się nad jakimiś narzędziami z GUI do zarządzania repozytorium, dowiedziałem się o istnieniu tig-a. Wtedy jednak narzędzie nie zrobiło na mnie jakiegoś wrażenia. Chciałem czegoś więcej. Czegoś co będzie miało jakiś interfejs użytkownika prezentowany w nowym oknie. Wybrałem wtedy narzędzie, które uruchamia się po uruchomieniu polecenia gitk.

Jest ono bardzo lekkie:

du -sh /usr/bin/gitk
 88K    /usr/bin/gitk

Tym samym działa szybko - a jest to dla mnie priorytem w doborze softu do codziennej pracy. Ile czasu można stracić używając wolnego oprogramowania to na pewno każdy z nas już się o tym przekonał.

Pozwolę sobie zamieścić zrzut ekranu z głównego okna kiedy to uruchamiam tig-a na jednym z moich projektów:

Opcje

tig to bardzo szybkie narzędzie terminalowe, dzięki któremu mamy dostęp do wielu rzeczy korzystając z prostych skrótów klawiaturowych.

Najważniejszym skrótem jest oczywiście dostęp do pomocy. Wchodzimy do programu i ... h.
Wchodzimy tym samym do ekranu z całą listą skrótów dostępnych pod tigiem.

m view-main         Show main view
d view-diff         Show diff view
l view-log          Show log view
t view-tree         Show tree view
f view-blob         Show blob view
b view-blame        Show blame view
r view-refs         Show refs view
s, S view-status       Show status view
c view-stage        Show stage view
y view-stash        Show stash view
g view-grep         Show grep view
p view-pager        Show pager view
h view-help         Show help view

Lista powyżej jest listą ekranów do których mamy dostęp za pomocą pojedynczych literek jako skrótów klawiaturowych - zwykłych literek.

Nie będę się starał opisywać całego programu, bo to nie o to chodzi - zresztą dziś zacząłem się nim interesować, więc potrzebuje jeszcze jakieś kilka tygodni codziennej pracy, aby móc się szerzej wypowiedzieć 😄

Nie mniej jednak zachęcam do korzystania, ponieważ dzięki tig zarządzamy repozytorium nie wpisując całych poleceń do terminala tylko korzystamy z łatwych skrótów. Nie czuję tutaj, abym nie wiedział co w danej chwili uruchomił za mnie program, tak jak ma to miejsce w tak skomplikowanych programach jak SourceTree czy chociażby GitHub for Mac.

git flow

Kolejnym narzędziem pomocnym w pracy z Git-em jest git flow. Nie jest to narzędzie zainstalowane domyślnie razem z Git-em, trzeba je zainstalować out-of-the-box.
(Link znajdziesz poniżej).

git flow wymusza na nas utrzymanie porządku w branchach i tagach, nie poprzez przełączanie się bezpośrednio pomiędzy branchami, tylko według zasad zdefiniowanych w tzw flow.

Nie mogę powiedzieć, że mam jakieś doświadczenie z takim podejściem, więc przytoczę tylko to, co Michał (@lewandm4) przekazał na szkoleniu.

Podstawową funkcjonalności jest przełączanie się pomiędzy feature-ami stworzonymi w projekcie poprzez:

git flow feature start 12345-support-sign-up

Kiedy zakończymy nad nim pracę informujemy, że feature został zakończony:

git flow feature finish 12345-support-sign-up

Wtedy taki branch zostaje zmergowany do brancha develop. Jest to branch w których nie prowadzimy żadnych prac, jest to taki kolektor, agregat, funkcjonalności realizowanych w innych branchach typu feature/xxx.
Hint: branch master jest odzwierciedleniem aplikacji na produkcji, czyli takiej która jest u klienta.

Ten rysunek przedstawia jak wygląda praca z git flow:

Bardzo ciekawą opcją jest jeszcze tworzenie release-ów aplikacji.
Z pomocą przychodzi tutaj polecenie:

git flow release start 1.0

git flow przełącza nas na specjalnego brancha, w którym możemy jeszcze tworzyć rewizję (np. podmiana numerka wersji w jakim README). Jest to bardzo wygodne rozwiązanie, bo jeśli nic nie musimy robić to po prostu wykonujemy finish tego procesu:

git flow release finish 1.0

Ze swojej strony bardzo zachęcam do chociażby wypróbowania takiego podejścia do zarządzania branchami w swoim projekcie.

Najlepiej jak by cały zespół projektowy wykorzystywał te narzędzie, zachowalibyśmy spójność w całym projekcie, co jest w większych projektach nie tylko wskazane, ale bez spójności (procedur) szybko zrobiłby się jakiś b... nieporządek 😄

Podsumowanie

Link do wcześniej wspomnianych rzeczy: