Git – podstawowe działania w terminalu i GUI

Strona główna Aktualności
Git – podstawowe działania w terminalu i GUI
Git – podstawowe działania w terminalu i GUI

O autorze

Git jest niezbędnym narzędziem każdego dewelopera. Praca z kodem w zespole wymaga tego, aby współdzielić kod i zarządzać nim. W tym wpisie zostanie pokazane jak założyć własne repozytorium na popularnym GitHubie oraz jak zarządzać nim z poziomu terminala, oraz używając narzędzi z GUI (w tym przypadku będzie to SourceTree).

GitHub – zakładamy repozytorium

Pierwszym krokiem jest oczywiście założenie konta na GitHubie. Wersja darmowa ma możliwości stworzenia zarówno publicznego, jak i prywatnego repozytorium, z podstawowym zarządzaniem kontem dla kilku osób. Mając już profil, przejdźmy do stworzenia nowego repozytorium dla naszego projektu:

Na tym etapie decydujemy się na wybór nazwy repozytorium. Warto, aby była ona prosta i nie zawierała specjalnych znaków, które mogą utrudnić pracę z projektem.

Decydujemy również czy nasze repozytorium będzie publiczne (dostępne dla wszystkich) lub prywatne (ograniczone tylko do zamkniętej grupy użytkowników). Prywatne repozytorium na darmowym koncie ma pewne ograniczenia (chociażby ilość współużytkowników), ale pozwala na przechowywanie kodu, z dala od innych.

Warto także już teraz dodać plik .gitignore, który jest zbiorem reguł opisujących, jakie pliki nie będą przetwarzane przez system kontroli wersji. W większości przypadków ignoruje się pliki binarne lub inne będące wynikiem kompilacji. GitHub posiada predefiniowane pliki .gitignore, dostosowane do platformy na jakiej pracujemy. W tym przypadku wybrałem VisualStudio, co automatycznie spowoduje ignorowanie plików związanych z kompilacją chociażby w .NET, jak i plików tymczasowych związanych z projektem w IDE.

Na tym etapie wybrać możemy również typ licencji, na jakiej będzie udostępniony projekt. Spowoduje to automatyczne dodanie pliku z licencją do repozytorium. Szczególnie jest to ważne w repozytoriach publicznych.

Tak stworzone repozytorium będzie posiadać głównych branch (master) z pierwszym commitem. Zawierać będzie ono pliki licencji, .gitignore, a także plik Readme, z opisem projektu.

Na górnej belce widzimy kilka zakładek. W tym momencie interesuje nas pierwsza, z kodem i branchami. Pozostałe służą do zarządzania kodem w większej grupie. Możemy tutaj zgłaszać uwagi czy błędy (Issues) czy rozwiązywać Pull requesty lub oceniać kod i mergować go z różnych branchy.

Git – praca z terminalem

Pracę z Gitem zaczniemy od zapoznania się z podstawowymi komendami Gita. Po instalacji Gita uruchamiamy terminal i przechodzimy do folderu, w którym chcemy przetrzymywać pliki z repozytorium.

Pierwszą komendą będzie sklonowanie repozytorium, które zostało założone w GitHubie. Adres do repozytorium znajdziemy bezpośrednio na stronie:

W konsoli wpisujemy zatem komendę, które sklonuje nam podstawowego brancha (master):

git clone https://github.com/djfoxer/testRepo.git
W tym momencie, Git zaciągnie dla nas kod z repozytorium. W tym momencie możemy zostać poproszeni o dane do autoryzacji. Login i hasło raz podane, zostaną zapamiętane na kolejne już sesje.

W większości przypadków nie pracujemy na branchu master, zatem stwórzmy brancha develop, który będzie wywodził się z mastera:

git branch develop
a następnie przejdźmy na świeżo utworzonego brancha:
git checkout develop
Powyższe komendy możemy skrócić do jednej:
git checkout -b develop
Teraz wrzućmy naszego nowego brancha na GitHuba, aby inni również mogli z niego korzystać, robimy to poleceniem:
git push  --set-upstream origin develop
Przyszedł czas na pierwszego commita. Dodajmy lub zmieńmy pliki w repozytorium, aby móc wrzucić kod do naszego brancha develop. W każdej chili możemy sprawdzić status gita, czyli co zmieniliśmy, dodaliśmy oraz co się dzieje na repozytorium poleceniem:
git status
Aby dodać zmiany użyjemy polecenia push. W celu dodania zmian w całym repozytorium wykonujemy polecenie:
git add –A
Często używane jest również polecenie
git add .
które dodaje również zmiany do stagingu, ale tylko w danym folderze i głębiej. Polecenie z przełącznikiem –A jest bardziej uniwersalnie i nie zapomnimy o żadnych zmianach, jakie nanieśliśmy na repozytorium.

Teraz przyszedł czas na commit, w tym celu wykonujemy polecenie:

git commit –m ”opis commitu 1”
a także wrzucamy zmiany z lokalnego repozytorium na serwer:
git push
Operowanie repozytorium z terminalu nie jest trudne, ale nie mamy prostego i szybkiego podglądu na stan repozytorium i stagingu (tego, co będziemy wrzucać w commicie). Szczególnie jest to uciążliwe przy dużych ilościach zmian w repozytorium lokalnym i gdy nie chcemy w commicie dodawać wszystkich modyfikacji, jakich dokonaliśmy. Wówczas konsola staje się delikatnie uciążliwa.

SourceTree – wygodne GUI do Gita

W sieci jest bardzo wiele darmowych klientów Gita, które oferują graficzny interfejs użytkownika przy obsłudze kontroli wersji. Jednym z nich jest SourceTree, darmowa aplikacja na Windows i mac OS. Instalacja jest niezmiernie prosta, a sama aplikacja cechuje się dużą intuicyjnością.

Pracę rozpoczynamy od sklonowania repozytoriom:

Podobnie jak w przypadku terminalu, podajemy adres zewnętrzny, a także miejsce docelowe, gdzie będziemy trzymali repozytoriom lokalnie. W razie potrzeby podajemy dane do autoryzacji.

Tworzenie commitów, nowych branchy i wiele innych akcji, jakie spotykamy w zarządzaniu repozytorium, wykonujemy bardzo intuicyjnie. Główne okno zawiera po lewej stronie listę branchy, a także commity z repozytorium. Poniżej okno przedstawia status zmian z SourceTree:

Widzimy tutaj zmiany dodane do stagingu, a także nowe pliki, które jeszcze nie zostały dorzucone w tworzonym commicie. Szybko przejrzymy konkretne różnice. W konsolowej wersji gita podobnie niewielka zmiana wyglądać będzie następująco:


On branch develop
Your branch is up to date with 'origin/develop'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
	modified:   entry.bat
Untracked files:
  (use "git add <file>..." to include in what will be committed)
	a.txt
	nowe.txt
Przy większej ilość zmian opanowanie wszystkiego nie jest już wcale wygodne z poziomu terminalu. Okno SourceTree jest skonstruowane bardzo przejrzyście. Stworzenie nowego commita sprowadza się do dodania plików do stagingu, uzupełnienia opisu i wciśnięcia przycisku Commit. Bez sprawdzania co chwila zmian poprzez git status, z poziomu GUI zrobimy to w prosty i przejrzysty sposób.

Tworzenie nowych branchy również ogranicza się do jednego przycisku:

Porównajmy teraz, jak wyglądają zmiany w repozytorium na stronie GitHub:

w narzędziu SourceTree:

a także w terminalu:

commit 9b34821f3092d99ed67903e02883fc18393b7185
Author: djfoxer <djfoxer@live.com>
Date:   Sun Apr 14 12:20:45 2019 +0200

    Commit 3

commit 68717765749382b16617781e03d8ed17022a625d
Author: djfoxer <djfoxer@live.com>
Date:   Sun Apr 14 12:19:36 2019 +0200

    commit 2

commit 396185e53628ae6d14b5b1f5b0378eec2218f255
Author: djfoxer <djfoxer@live.com>
Date:   Sun Apr 14 12:13:52 2019 +0200

    commit 1

commit d3d2f95263f540ffd2aa1131e208147d2e072703
Author: djfoxer <djfoxer@users.noreply.github.com>
Date:   Sun Apr 14 11:42:05 2019 +0200

    Update README.md

commit 41e081e0ef0bdae5188551f77310bde139408875
Author: djfoxer <djfoxer@users.noreply.github.com>
Date:   Sun Apr 14 10:59:31 2019 +0200

    Initial commit

Git – narzędzia

Git ma być pomocą dla dewelopera i narzędziem do zarządzania kodem, działającym w tle. Nie powinien być on uciążliwością, a pomagać na co dzień i oferować szybki dostęp do opcji. Git w wybranym narzędziu graficznym będzie na pewno świetnym wyborem. Trywialne przeglądanie rzeczy do commitowania i zarządzanie zmianami do główne zalety aplikacji z prostym GUI. Również merge czy nawet cherry-picki (przenoszenie commitów pomiędzy branchami) jest znacznie wygodniejsze z poziomu narzędzia graficznego.

Oczywiście warto znać obsługę Gita przez terminal, ale zapewne przyda się to w wyjątkowych i bardzo rzadkich sytuacjach. Wówczas niezbędne będzie sięgnięcie do dokumentacji (a finalnie zapewne do podpowiedzi na stackoverflow) w celu poprawnego wykonania bardziej zaawansowanych poleceń.

Graficzne narzędzie do Gita pozwoli na swobodną i niestresującą pracę z kontrolą wersji. Jest to niezmiennie ważne, gdy dokonujemy wielu zmian w środowisku, które może generować dodatkowe pliki, których się nie będziemy spodziewać. Szybkie spojrzenie na zmiany w GUI jest znacznie wygodniejsze i szybsze, niż ma to miejsce w wersji konsolowej. Warto znać obie metody operowania na Gicie, ale wybrać tą, która bardziej odpowiada naszym aktualnym oczekiwaniom.

O autorze

Programista .NET i innych technologii Microsoft od ponad 10 lat. Niepoprawny fan retro, mentalny właściciel Amigi. Uwielbia jazdę rowerem i biegi długodystansowe.

© dobreprogramy