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ę.
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:
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 tig
iem.
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:
Kiedy zakończymy nad nim pracę informujemy, że feature został zakończony:
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
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:
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:
- Prezentacja Michała: https://www.youtube.com/watch?v=QrJ5cdX1ir4
-
Repozytorium
tig
-a: github.com/jonas/tig -
Projekt
git flow
: github.com/nvie/gitflow