Cześć Wam! Większość programistów (i nie tylko) po jakimś czasie swojej przygody z programowaniem odczuwa problemy z wersjonowaniem swojego projektu. Przykładowo: jeśli zaczynamy rano pracę na stabilnym projekcie, w międzyczasie wprowadzimy zmiany i w trakcie dalszych implementacji (bez wcześniejszego testowania) okaże się, że z niewiadomych przyczyn aplikacja/program nie działa, to trochę czasu zajmie nam znalezienie błędu. Debugowanie i szukanie błędów w aplikacji jest jak najbardziej czymś niezbędnym i czasami nieuniknionym, ale zawsze można sobie ułatwić życie wersjonując swoje postępy. System kontroli wersji śledzi wszelkie zmiany które dokonujemy na pliku (lub plikach) i umożliwia przywrócenie dowolnej wcześniejszej wersji. Oczywiście najpopularniejszym systemem kontroli wersji jest Git (jego pierwsza wersja została wydana 7 kwietnia 2005 roku). Dla osób które dalej nie łapią tematu, wrzucam „mema”, który powinien przybliżyć temat:
Git jest narzędziem, które musi praktycznie poznać każdy programista. Nie chciałbym zanudzać i teraz tłumaczyć krok po kroku czym jest Git i na czym polega, ponieważ w Internecie jest takich poradników multum (wystarczy wpisać w Google coś w stylu: „git poradnik”). Zależy mi, by treści przekazywane dla Was były w pewien sposób unikalne. Nie widzę sensu powielać po raz n-ty czegoś, co w podobnym tonie przeczytacie na innej stronie internetowej (oczywiście jeśli ktoś chciałby pomocy z tym związanej – można się ze mną skontaktować przez formularz kontaktowy albo na Facebooku). Chciałbym przedstawić Wam najważniejsze Git-owe polecenia i dlaczego najlepiej zacząć od konsoli, ale tylko przez pewien określony czas. No to do dzieła!
Podstawowe komendy które można używać z poziomu linii poleceń:
- Pobranie aktualnego stanu zdalnego repozytorium
git fetch -all
- Przełączenie aktywnego lokalnego brancha na «nazwa_lokalnego_brancha» z domergeowaniem zdalnego brancha «nazwa_zdalnego_brancha»:
git checkout --merge -B «nazwa_lokalnego_brancha» origin/«nazwa_zdalnego_brancha»
- Domergeowanie do aktualnego lokalnego brancha lokalnego brancha ‘master’:
git merge --no-ff master
ogólniej, domergeowanie do aktualnego lokalnego brancha innego lokalnego lub zdalnego brancha «nazwa_lokalnego_lub_zdalnego_brancha»:
git merge --no-ff «nazwa_lokalnego_lub_zdalnego_brancha»
- Przesłanie aktualnego lokalnego brancha do zdalnego brancha ‘master’:
git push origin master
- Pobranie aktualnego stanu zdalnego repozytorium z dodatkowym usunięciem lokalnych branchy nie mających już swoich odpowiedników w zdalnym repozytorium:
git fetch --prune
- Otagowanie aktualnego stanu lokalnego repozytorium (aktualnego commitu) w repozytorium zdalnym:
git push origin tag «nazwa_tagu»
Na początku swojej przygody z systemem kontrolowania wersji polecam wszystkim skorzystać z tradycyjnej, konsolowej wersji. Dlaczego? Poznamy sens tego narzędzia od środka i zapoznamy się dokładnie z jego działaniem od wewnątrz. Dzięki temu wszystkie ruchy, które będziemy w przyszłości wykonywać na graficznych odpowiednikach, będą nam wiadome i niczego nie powinniśmy w ten sposób zepsuć (np wypushować coś do mastera mimo konfliktów). Większość graficznych narzędzi wspomagających system kontroli wersji jest na tyle intuicyjnych, że większość programistów, nigdy nie pisząc komend w konsoli, by sobie poradziła, ale lepiej znać te mechanizmy od środka. Jeśli jesteśmy już przy graficznych (GUI) odpowiednikach wspomagających Git-a, to gorąco polecam Git Extension. Proste, intuicyjne narzędzie dzięki któremu widzimy wszystkie rozgałęzienia/strukturę naszych branchy. Oczywiście Git Extension oferuje nam też coś takiego jak „Git Bash”, czyli, jeśli coś jest „nie do zrobienia” w wersji graficznej – bez problemu, szybko i efektywnie możemy przejść na wersję konsolową.
Pozdrawiam serdecznie,
biegajacyprogramista.pl