Git to podstawowe narzędzie programisty. Zapoznaj się z Gitem w kompletnym poradniku, który przygotowałem. Poradnik zawiera wstęp teoretyczny, proces instalacji i konfiguracji Gita oraz najważniejsze komendy do codziennej pracy.
Spis treści
Wstęp — Wprowadzenie do Git
Czym jest Git?
Git to rozproszony system kontroli wersji (DVCS), używany głównie do śledzenia zmian w kodzie oprogramowania. Git pozwala na sklonowanie repozytorium, czyli wykonanie kopii kodu na swoim urządzeniu. Pozwala on na równoległą pracę nad tym samym kodem źródłowym wraz z innymi osobami. W praktyce oznacza to, że wykonujemy kopie kodu źródłowego, a następnie tworzymy nowe odgałęzienie (branch) w celu dokonania jakiejś zmiany. Po zakończeniu pracy łączymy naszą wersję kodu z główną gałęzią. Taki sposób pracy pozwala na łatwą pracę wielu osób nad tym samym kodem, co przyśpiesza proces tworzenia oprogramowania w szczególności w rozproszonych zespołach.
Git pozwala również na śledzenie historii zmian naszego kodu. Możemy przełączyć się do dowolnego miejsca w historii. Zaletą tego jest możliwość podglądu wcześniejszej wersji kodu. W przypadku jakiegoś błędu jesteśmy w stanie cofnąć się do wersji, w której wszystko działa poprawnie, a następnie wysłać kod na produkcję, w międzyczasie naprawiając błąd.
Krótka historia Gita i jego powstania
Twórcą Gita jest Linus Torvalds twórca jądra Linux. Początek to rok 2005. Git powstał w wyniku konfliktu, który dotyczył licencji komercyjnego systemu BitKeeper. Linus zdecydował stworzyć własny system i powstał on zaledwie w ciągu kilku tygodni. Celem projektu było stworzenie narzędzia szybkiego, prostego i niezawodnego dla rozproszonych przepływów pracy.
Do dzisiaj Git jest aktywnie ulepszany i rozwijany. Narzędzie stało się standardem w procesie tworzenia oprogramowania.
Alternatywy dla Git
Git posiada kilka alternatywnych narzędzi. Z tej samej kategorii co Git możemy wymienić Mercurial. Jego funkcjonalności są bardzo zbliżone do Gita. Inną alternatywą jest starszy Subversion (SVN). Nadal jest używany głównie w korporacjach i starszych projektach. Git jest najbardziej popularnym narzędziem do kontroli wersji kodu. Zdecydowana większość ofert pracy programistycznych zawiera znajomość Gita w wymaganiach.
Podstawy Git
Czym jest system kontroli wersji?
Częściowo już to zostało opisane wyżej. System kontroli wersji to narzędzie do śledzenia zmian w kodzie źródłowym oprogramowania. Pozwala on na współpracę wielu osób oraz umożliwia przywracanie wcześniejszych wersji kodu.
Wyróżniamy trzy rodzaje kontroli wersji:
- Lokalne systemy kontroli wersji,
- Centralizowane systemy kontroli wersji (CVCS) np. SVN
- Rozproszone systemy kontroli wersji (DVCS) np. Git lub Mercurial
Dlaczego Git jest taki popularny?
Git posiada ugruntowaną pozycję na rynku. Stał się popularny z kilku powodów. Jednym z nich jest prostota oraz szybkość pracy z tym narzędziem. Git umożliwia również pracę wielu osób nad tym samym kodem źródłowym bez potrzeby łączenia się z internetem czy serwerem. Łatwość oraz jego możliwości znacznie przewyższają inne rodzaje systemów kontroli wersji. Fakt utworzenia go przez Linusa Torvaldsa pewnie miał również niemałe znaczenie, ale to już moje przeczucie. Git używany jest na popularnych stronach takich jak GitHub czy GitLab.
Instalacja i konfiguracja Git
Sprawdź, czy Git jest już zainstalowany
Sprawdź w swoim terminalu czy Git jest zainstalowany. Wprowadź jedną z poniższych komend. Pierwsza powinna wyświetlić listę komend dla Gita, natomiast druga powinna wyświetlić wersję. Pomiń instalację, jeśli masz Gita w swoim systemie.
git
git version
Jak zainstalować Gita?
Proces instalacji Gita różni się w zależności od systemu operacyjnego oraz środowiska. Zazwyczaj nie będzie potrzeby wykonania tego kroku, ponieważ Git najczęściej zainstalowany jest domyślnie, w szczególności w systemach Linux czy macOS.
Windows
Tutaj mamy kilka opcji instalacji.
Git for Windows
Instalacja odbywa się przy pomocy instalatora. Pobierz plik i zainstaluj.
Z pomocą winget
winget install --id Git.Git -e --source winget
WSL (Windows Subsystem for Linux)
Tutaj należy wykonać kroki Linuksowe (zależnie od wybranej dystrybucji).
macOS
Homebrew
brew install git
MacPorts
sudo port install git
Linux
Debian/Ubuntu
Instaluje ostatnią stabilną wersję dla danej wersji Debian/Ubuntu.
apt-get install git
Instaluje najbardziej aktualną wersję Git.
add-apt-repository ppa:git-core/ppa # apt update; apt install git
Fedora
Dla Fedory 21 i wcześniejszych wersji.
yum install git
Dla Fedory 22 i późniejszych wersji
dnf install git
Gentoo
emerge --ask --verbose dev-vcs/git
Arch Linux
pacman -S git
openSUSE
zypper install git
Mageia
urpmi git
Nix/NixOS
nix-env -i git
FreeBSD
pkg install git
Solaris 9/10/11 (OpenCSW)
pkgutil -i git
Solaris 11 Express
pkg install developer/versioning/git
OpenBSD
pkg_add git
Alpine
apk add git
Podstawowa konfiguracja Git
Wszystkie opcje konfiguracyjne znajdziecie na stronie Git: Config.
Ustawianie nazwy użytkownika oraz email
Najważniejszą czynnością będzie skonfigurowanie nazwy użytkownika oraz email. Będą wykorzystywane do przypisywania zmian oraz do identyfikacji z zewnętrznymi systemami.
Użyj poniższych komend z Twoim danymi.
git config --global user.email=TWOJ_ADRES_EMAIL_TUTAJ@EXAMPLE.COM
git config --global user.username=TWOJA_NAZWA_UZYTKOWNIKA
Parametr --global
ustawia dane globalnie. Gdy chcemy ustawić je dla konkretnego repozytorium, należy użyć komendy bez tego parametru.
git config user.email=TWOJ_ADRES_EMAIL_TUTAJ@EXAMPLE.COM
git config user.username=NAZWA_UZYTKOWNIKA
Edytor Git
Możemy też zmienić edytor, który będzie otwierany, gdy Git będzie potrzebował wprowadzenia jakiejś informacji tekstowej. Domyślny edytor to edytor ustawiony w systemie. Zmian dokonasz za pomocą komendy (w tym przykładzie zmieniamy edytor na emacs
):
git config --global core.editor emacs
Wyświetlenie ustawionej konfiguracji
Warto też znać komendę, która wyświetli listę ustawień.
git config --list
Pierwsze kroki z Git
Tworzenie nowego repozytorium
Tworzenie nowego repozytorium w Git jest bardzo proste. Należy skorzystać z komendy git init
w folderze, w którym chcemy zainicjalizować repozytorium Git.
cd your-new-repo-folder
git init
W konsoli otrzymamy komunikat:
Initialized empty Git repository in /path-to-folder/your-new-repo-folder/.git/
Jeśli folder jest pusty, to po wpisaniu komendy `git status` otrzymamy następującą informację:
On branch master
No commits yet
nothing to commit (create/copy files and use "git add" to track)
W innym przypadku otrzymamy komunikat (dodałem pusty plik `index.html`):
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
index.html
Repozytorium Git jest gotowe do pracy.
Dodajmy wszystkie pliki do indeksu i utwórzmy pierwszy commit.
git add .
git commit
git add
. odpowiada za dodanie wszystkich plików do indeksu.
git commit
tworzy commita. Otworzy nam się domyślny edytor systemowy, w którym możemy wpisać opis naszego commita. Po wszystkim zmiany są gotowe i można kontynuować pracę.
Struktura Git po utworzeniu repozytorium
Komenda git init
tworzy nowy folder .git
, który tworzy pliki oraz foldery potrzebne do działania repozytorium. W skład folderów i plików wchodzą: objects
, refs/heads
, refs/tags
oraz pliki szablonów (template files
). Zostaje również stworzony domyślny branch master
. Nazwę domyślnego brancha podczas inicjalizacji repozytorium Git można zmienić poprzez parametr --initial-branch
. Inicjalizacja nowego repozytorium nie dokonuje żadnych zmian w plikach, więc wykonanie tej komendy jest całkowicie bezpieczne.
Podstawowe komendy
Poniżej podstawowe komendy Git, które pozwolą na wykonanie najpotrzebniejszych operacji.
git add
Komenda odpowiada za dodawania plików do indeksu. Tylko indeksowane pliki są dodawane do commita. W praktyce oznacza to, że możemy wybrać, które zmiany mają zostać dodane do commita. Możemy dodać wszystkie za pomocą komendy git add .
lub tylko wybrany plik np. git add README.md
.
git commit
Zadaniem komendy jest zapisywanie zmian wraz z opisem przygotowanym przez użytkownika w repozytorium.
git push
Po zapisaniu zmian możemy je wysłać za pomocą git push
na serwer zdalny (np. GitHub lub inny serwer).
git pull
Do pobrania najnowszych zmian z serwera służy komenda git pull
. Jeśli są zmiany do pobrania, to zostaną one pobrane do lokalnego repozytorium.
Praca z gałęziami (branch
)
Czym jest branch?
Branch pozwala na pracę nad kodem w odosobnieniu. Proces tworzenia nowego brancha można sobie wyobrazić jak proces kopiowania kodu, nad którym możemy pracować bez obaw, że zmiany innych mogą skomplikować naszą pracę. Oczywiście Git nie tworzy kopii wszystkich plików, tylko wykonuje snaphshoty co czyni go szybkim. Więcej na ten temat znajdziesz na oficjalnej stronie o branchach.
Krótko mówiąc: repozytorium posiada główną linię. Tworząc nowy branch tworzymy osobną linię, którą po zakończeniu prac ponownie łączymy z główną.

Jak utworzyć nowy branch?
Tworzenie brancha jest bardzo proste. Można to zrobić za pomocą komendy:
git branch your-new-branch
Ta komenda tworzy tylko nowy branch, ale nie przełączamy się na niego. Do przełączenia się na nowy branch należy użyć:
git checkout your-new-branch
Jeśli chcemy utworzyć nowy branch i jednocześnie się na niego przełączyć można jeszcze użyć komendy:
git checkout -b your-new-branch
Łączenie zmian z master
Po skończonej pracy nad funkcjonalnością na osobnym branchu chcemy połączyć nowe zmiany, czyli zrobić merge. Do łączenia zmian głównej linii i naszej służy komenda git merge
.
Przełącz się na branch główny.
git checkout master
Połącz zmiany.
git merge your-new-branch
Jeśli nie będzie konfliktów, to zmiany zostaną połączone. Jeśli pojawią się konflikty, należy rozwiązać je, sprawdzając konfliktujące się pliki. Wykorzystaj komendę git status
do tego.
W standardowym procesie (w pracy) zamiast wykonywania merge bezpośrednio do głównego brancha, będzie trzeba stworzyć PR (Pull Request) lub MR (Merge Request). MR lub PR najpierw przechodzą przegląd kodu przez inne osoby w zespole, potem dopiero robimy merge (poprzez UI w przeglądarce).
Podsumowanie
Git to system kontroli wersji, który jest standardem w pracy programisty. Znajomość tego narzędzia to aktualnie wymóg i bez niego nie obejdziemy się, tworząc wszelkiego rodzaju oprogramowanie. Nie ma jednak czym się przejmować, ponieważ nauka Gita na poziomie pozwalającego swobodnie pracować jest szybka, więc nauczymy się go nawet kilka dni przed rozpoczęciem pracy.
Narzędzie to pozwala na pracę wielu osób nad tym samym kodem i znacznie ułatwia proces powstawania oprogramowania w zespołach rozproszonych. Git to nie tylko narzędzie używane przez firmy i korporacje, ale również jest użyteczne w prywatnych projektach. Ten system kontroli wersji, w porównaniu do konkurencyjnych rozwiązań z innych kategorii jest wydajniejszy.
Zachęcam do nauki i świadomego korzystania z tego narzędzia, szczególnie jeśli będziemy korzystać również z innych komend. Nieprzemyślane użytkowanie może sprawić wiele problemów dla wszystkich współpracowników. Polecam zapoznać się z oficjalną dokumentację Git.
Źródła
Dokumentacja Git – https://git-scm.com/
Oficjalny tutorial Git – https://git-scm.com/docs/gittutorial
Git Config – https://git-scm.com/docs/git-config
Short history of git – https://git-scm.com/book/en/v2/Getting-Started-A-Short-History-of-Git
Mercurial SCM – https://www.mercurial-scm.org/
SVN Wikipedia – https://pl.wikipedia.org/wiki/Subversion
Dodaj komentarz