Git dla początkujących – jak zacząć korzystać z kontroli wersji

Wyobraź sobie, że pracujesz nad ważnym projektem i nagle zdajesz sobie sprawę, że wczorajsza wersja kodu działała świetnie, ale dzisiaj – po kilku zmianach – wszystko się posypało. Bez systemu kontroli wersji jedyną opcją jest mozolne cofanie zmian ręcznie. Z Gitem wystarczy kilka poleceń, aby wrócić do dowolnego punktu w historii projektu. Brzmi dobrze? Zaczynamy!

Czym jest Git i dlaczego warto go używać?

Git to rozproszony system kontroli wersji (ang. Distributed Version Control System), stworzony w 2005 roku przez Linusa Torvaldsa – tego samego człowieka, który stworzył jądro Linuxa. Jego głównym zadaniem jest śledzenie zmian w plikach, najczęściej w kodzie źródłowym oprogramowania.

Dlaczego warto go używać? Oto kilka kluczowych powodów:

  • Historia zmian – każda modyfikacja jest zapisana wraz z informacją, kto ją wprowadził i kiedy.
  • Praca zespołowa – wiele osób może pracować nad tym samym projektem równocześnie, bez nadpisywania wzajemnie swoich zmian.
  • Bezpieczeństwo – możesz eksperymentować z kodem bez ryzyka utraty działającej wersji.
  • Cofanie zmian – błąd można naprawić, wracając do poprzedniej wersji w kilka sekund.
  • Przenośność – repozytoria Git działają na Windows, macOS i Linux.

Git jest dziś standardem w branży IT. Praktycznie każda firma zajmująca się tworzeniem oprogramowania używa go na co dzień, dlatego znajomość podstaw Gita to absolutna konieczność dla każdego aspirującego programisty.

Instalacja Gita

Przed rozpoczęciem pracy z Gitem musisz go zainstalować na swoim komputerze. Oto instrukcje dla najpopularniejszych systemów operacyjnych:

Windows

Pobierz instalator ze strony git-scm.com i uruchom go, pozostawiając domyślne ustawienia. Instalator dostarczy Ci Git Bash – terminal, w którym będziesz wpisywał polecenia Git.

macOS

Na macOS możesz zainstalować Git przez Homebrew, wpisując w terminalu:

brew install git

Alternatywnie, Git jest często preinstalowany wraz z Xcode Command Line Tools.

Linux (Ubuntu/Debian)

sudo apt update
sudo apt install git

Po instalacji sprawdź, czy Git działa poprawnie, wpisując:

git --version

Powinieneś zobaczyć numer zainstalowanej wersji, np. git version 2.43.0.

Pierwsza konfiguracja

Zanim zaczniesz używać Gita, musisz podać swoje dane – Git będzie je zapisywał przy każdym commicie (zapisie zmian). Wpisz poniższe polecenia w terminalu, zastępując dane przykładowymi własnymi:

git config --global user.name "Jan Kowalski"
git config --global user.email "jan.kowalski@example.com"

Opcja --global oznacza, że te ustawienia będą obowiązywać dla wszystkich projektów na Twoim komputerze. Możesz też ustawić domyślny edytor tekstu, np. VS Code:

git config --global core.editor "code --wait"

Kluczowe pojęcia, które musisz znać

Zanim przejdziemy do praktyki, warto zapoznać się z kilkoma podstawowymi terminami:

  • Repozytorium (repo) – folder projektu śledzony przez Gita, zawierający całą historię zmian.
  • Commit – zapis stanu plików w danym momencie, jak "migawka" projektu.
  • Branch (gałąź) – niezależna linia rozwoju projektu, pozwalająca pracować nad różnymi funkcjami równocześnie.
  • Merge – łączenie zmian z różnych gałęzi.
  • Remote – zdalne repozytorium, np. na GitHubie, z którym synchronizujesz lokalną pracę.
  • Clone – pobranie kopii zdalnego repozytorium na lokalny komputer.
  • Push/Pull – wysyłanie zmian do zdalnego repo (push) i pobieranie zmian z zdalnego repo (pull).

Tworzenie pierwszego repozytorium

Pora na praktykę! Stwórzmy pierwsze repozytorium Git. Otwórz terminal, przejdź do wybranego folderu i wpisz:

mkdir moj-projekt
cd moj-projekt
git init

Polecenie git init tworzy ukryty folder .git, w którym Git przechowuje całą historię projektu. Teraz Twój folder jest repozytorium Git!

Podstawowy workflow – dodawanie i zapisywanie zmian

Praca z Gitem opiera się na prostym cyklu: modyfikujesz pliki → dodajesz zmiany do tzw. staging area → zapisujesz commit.

Krok 1: Utwórz plik i sprawdź status

echo "Witaj, świecie!" > index.html
git status

Polecenie git status pokaże Ci, że plik index.html jest nowy i nieśledzony (ang. untracked).

Krok 2: Dodaj plik do staging area

git add index.html

Możesz dodać wszystkie zmienione pliki jednocześnie:

git add .

Krok 3: Zapisz commit

git commit -m "Dodaj plik index.html z powitaniem"

Flaga -m pozwala dodać wiadomość opisu commita bezpośrednio w poleceniu. Dobre wiadomości commitów są krótkie, konkretne i opisują, co zostało zmienione – to dobra praktyka, która bardzo pomaga w późniejszej analizie historii projektu.

Sprawdź historię commitów

git log

Zobaczysz listę wszystkich commitów z datą, autorem i wiadomością. Dla bardziej czytelnego widoku możesz użyć:

git log --oneline --graph

Praca z gałęziami (branches)

Gałęzie to jedna z najpotężniejszych funkcji Gita. Pozwalają tworzyć oddzielne "kopie" projektu, w których możesz eksperymentować bez wpływu na główną wersję kodu.

Tworzenie i przełączanie gałęzi

# Stwórz nową gałąź
git branch nowa-funkcja

# Przełącz się na nią
git checkout nowa-funkcja

# Lub zrób oba kroki jednocześnie
git checkout -b nowa-funkcja

We współczesnych wersjach Gita (2.23+) możesz używać nowszego polecenia:

git switch -c nowa-funkcja

Scalanie gałęzi (merge)

Gdy skończysz pracę na gałęzi i chcesz połączyć ją z główną gałęzią (zazwyczaj main lub master):

git checkout main
git merge nowa-funkcja

Praca ze zdalnym repozytorium – GitHub

GitHub to najpopularniejsza platforma do hostowania repozytoriów Git. Pozwala przechowywać kod w chmurze, współpracować z innymi i prezentować swoje projekty. Alternatywami są GitLab i Bitbucket.

Jak połączyć lokalne repo z GitHubem?

  1. Utwórz konto na github.com.
  2. Kliknij "New repository" i nadaj mu nazwę.
  3. Skopiuj adres URL nowego repozytorium.
  4. W terminalu, będąc w folderze projektu, wpisz:
git remote add origin https://github.com/twojanazwa/moj-projekt.git
git branch -M main
git push -u origin main

Od tej chwili możesz wysyłać nowe commity poleceniem git push i pobierać zmiany poleceniem git pull.

Klonowanie istniejącego repozytorium

Jeśli chcesz pobrać istniejący projekt z GitHuba:

git clone https://github.com/uzytkownik/nazwa-projektu.git

Najczęstsze polecenia Git – ściągawka

Polecenie Opis
git init Inicjalizuje nowe repozytorium
git status Pokazuje stan plików w repo
git add . Dodaje wszystkie zmiany do staging area
git commit -m "opis" Zapisuje commit z opisem
git log --oneline Wyświetla skróconą historię commitów
git branch Lista gałęzi w projekcie
git checkout -b nazwa Tworzy i przełącza na nową gałąź
git merge nazwa Scala wskazaną gałąź z bieżącą
git push Wysyła zmiany do zdalnego repo
git pull Pobiera i scala zmiany ze zdalnego repo

Plik .gitignore – czego Git nie powinien śledzić?

Nie wszystkie pliki powinny trafiać do repozytorium. Pliki konfiguracyjne z hasłami, foldery z zależnościami (node_modules), pliki tymczasowe czy logi to przykłady rzeczy, które warto wykluczyć. Służy do tego plik .gitignore.

Utwórz plik .gitignore w głównym folderze projektu i dodaj do niego wzorce nazw plików, które Git ma ignorować, np.:

# Zależności Node.js
node_modules/

# Pliki środowiskowe
.env

# Logi
*.log

# Folder build
/dist

Strona gitignore.io pozwala automatycznie wygenerować odpowiedni plik .gitignore dla Twojego języka lub frameworka.

Dobre praktyki pracy z Gitem

  • Commituj często i małymi porcjami – łatwiej śledzić zmiany i cofać konkretne błędy.
  • Pisz sensowne wiadomości commitów – unikaj opisów typu "fix" czy "update". Lepiej: "Napraw błąd walidacji formularza logowania".
  • Używaj gałęzi do każdej nowej funkcji – nie commituj bezpośrednio do gałęzi main.
  • Regularnie synchronizuj się ze zdalnym repogit pull przed rozpoczęciem pracy zmniejsza ryzyko konfliktów.
  • Nie commituj wrażliwych danych – haseł, kluczy API itp. Użyj zmiennych środowiskowych i pliku .gitignore.

Podsumowanie

Git może na początku wydawać się skomplikowany, ale podstawowy workflow – init, add, commit, push – jest prosty do opanowania po kilku dniach praktyki. Najważniejsze to zacząć używać Gita w każdym projekcie, nawet małym i prywatnym. Im wcześniej wyrobisz ten nawyk, tym szybciej kontrola wersji stanie się dla Ciebie naturalną częścią pracy programisty.

W kolejnych artykułach na techbyte.pl przyjrzymy się bardziej zaawansowanym tematom, takim jak rozwiązywanie konfliktów merge, rebase, cherry-pick czy popularne strategie pracy z gałęziami (Git Flow, GitHub Flow). Śledź nas i rozwijaj swoje umiejętności krok po kroku!