Obejrzałem dziś prezentację pt: Git — krok po kroku Michała Lewandowskiego w ramach Jinkubatora .
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:
du -sh /usr/bin/gitk
88K /usr/bin/gitk
Tym samym działa szybko - a jest to dla mnie priorytetem 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.
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ć osobno (link 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 doświadczenie z takim podejściem, więc przytoczę tylko to, co Michał 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 tworzyć kolejne rewizje (np. podmiana numerka wersji w README.md).
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.
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