Git – podstawowe komendy, które musisz znać
Niezależnie od tego, czy jesteś początkującym programistą, czy doświadczonym developerem, znajomość podstawowych komend Git jest absolutną koniecznością. Git umożliwia śledzenie zmian w kodzie, cofanie błędów, pracę równoległą na wielu funkcjonalnościach oraz efektywną współpracę w zespole. W tym przewodniku omówimy najważniejsze polecenia, które powinieneś opanować do perfekcji.
Czym jest Git i dlaczego warto go używać?
Git to rozproszony system kontroli wersji (DVCS – Distributed Version Control System) stworzony przez Linusa Torvaldsa w 2005 roku. W odróżnieniu od centralnych systemów kontroli wersji, każdy developer posiada pełną kopię repozytorium na swoim komputerze. Dzięki temu praca jest możliwa nawet bez połączenia z internetem, a ryzyko utraty danych jest minimalne.
Git jest dziś standardem branżowym – używany jest zarówno przez małe startupy, jak i największe korporacje technologiczne na świecie. Platformy takie jak GitHub, GitLab czy Bitbucket zbudowane są właśnie wokół Gita i oferują dodatkowe funkcje ułatwiające współpracę zespołową.
Instalacja i konfiguracja
Zanim przejdziemy do komend, upewnij się, że Git jest zainstalowany na Twoim komputerze. Możesz to sprawdzić poleceniem:
git --version
Jeśli Git nie jest zainstalowany, pobierz go ze strony git-scm.com. Po instalacji skonfiguruj swoje dane, które będą widoczne przy każdym commicie:
git config --global user.name "Twoje Imię"
git config --global user.email "twoj@email.com"
Podstawowe komendy Git
1. git init – inicjalizacja repozytorium
Komenda git init tworzy nowe, puste repozytorium Git w bieżącym katalogu. Używaj jej, gdy zaczynasz nowy projekt od zera:
git init
Po wykonaniu tej komendy w katalogu pojawi się ukryty folder .git, który przechowuje całą historię projektu i konfigurację repozytorium.
2. git clone – klonowanie repozytorium
Jeśli chcesz pobrać istniejące repozytorium (np. z GitHuba), użyj komendy git clone:
git clone https://github.com/uzytkownik/nazwa-repo.git
Komenda ta tworzy lokalną kopię zdalnego repozytorium wraz z całą historią commitów. Możesz również określić nazwę katalogu docelowego:
git clone https://github.com/uzytkownik/nazwa-repo.git moj-projekt
3. git status – sprawdzenie stanu repozytorium
To jedna z najczęściej używanych komend. git status pokazuje aktualny stan repozytorium – które pliki zostały zmodyfikowane, które są gotowe do commitu (staging area), a które nie są śledzone przez Gita:
git status
Regularne sprawdzanie statusu pomaga uniknąć pomyłek i zapewnia pełną kontrolę nad tym, co zostanie zapisane w historii projektu.
4. git add – dodawanie plików do staging area
Przed wykonaniem commitu musisz wskazać Gitowi, które zmiany chcesz zapisać. Służy do tego komenda git add:
# Dodanie konkretnego pliku
git add nazwa-pliku.js
# Dodanie wszystkich zmienionych plików
git add .
# Dodanie wszystkich plików z rozszerzeniem .html
git add *.html
Staging area (obszar przejściowy) to swego rodzaju "poczekalnia" – pliki umieszczone w tym obszarze zostaną uwzględnione w następnym commicie.
5. git commit – zapisywanie zmian
Commit to zapis stanu projektu w danym momencie. Każdy commit powinien zawierać czytelny opis wprowadzonych zmian:
git commit -m "Dodanie formularza kontaktowego"
Dobrą praktyką jest pisanie krótkich, konkretnych komunikatów commitów w trybie rozkazującym (np. "Dodaj", "Napraw", "Usuń"). Możesz też połączyć git add i git commit w jedno polecenie dla śledzonych plików:
git commit -am "Naprawienie błędu w nawigacji"
6. git log – historia commitów
Komenda git log wyświetla historię commitów w bieżącym repozytorium:
# Pełna historia
git log
# Skrócona historia (jeden wiersz na commit)
git log --oneline
# Historia z graficznym przedstawieniem gałęzi
git log --oneline --graph --all
Historia commitów to świetne narzędzie do śledzenia postępów pracy i identyfikowania momentu, w którym pojawił się błąd.
7. git branch – zarządzanie gałęziami
Gałęzie (branches) to jedna z najpotężniejszych funkcji Gita. Pozwalają pracować nad różnymi funkcjonalnościami jednocześnie, bez wpływu na główny kod projektu:
# Lista wszystkich gałęzi
git branch
# Tworzenie nowej gałęzi
git branch nazwa-galezi
# Usunięcie gałęzi
git branch -d nazwa-galezi
8. git checkout / git switch – przełączanie gałęzi
Aby przełączyć się na inną gałąź, możesz użyć komendy git checkout lub nowszej git switch:
# Przełączenie na istniejącą gałąź
git checkout nazwa-galezi
git switch nazwa-galezi
# Tworzenie i przełączenie na nową gałąź
git checkout -b nowa-galaz
git switch -c nowa-galaz
Możesz też użyć git checkout do przywrócenia pliku do stanu z ostatniego commitu:
git checkout -- nazwa-pliku.js
9. git merge – scalanie gałęzi
Po zakończeniu pracy na osobnej gałęzi możesz scalić ją z gałęzią główną (zazwyczaj main lub master):
# Przejdź na gałąź, do której chcesz scalić
git checkout main
# Scal gałąź feature z main
git merge feature/nowa-funkcja
Podczas scalania mogą pojawić się konflikty, jeśli te same linie kodu zostały zmodyfikowane w obu gałęziach. Git oznacza takie miejsca w plikach, a developer musi ręcznie zdecydować, która wersja ma zostać zachowana.
10. git pull i git push – synchronizacja ze zdalnym repozytorium
Te dwie komendy są kluczowe przy pracy zespołowej:
# Pobieranie i scalanie zmian ze zdalnego repozytorium
git pull origin main
# Wysyłanie lokalnych commitów do zdalnego repozytorium
git push origin main
Dobrą praktyką jest wykonywanie git pull przed rozpoczęciem pracy i przed git push, aby uniknąć konfliktów ze zmianami wprowadzonymi przez innych członków zespołu.
11. git stash – odkładanie zmian na bok
git stash to bardzo przydatna komenda, gdy musisz szybko przełączyć się na inną gałąź, ale nie chcesz commitować niedokończonej pracy:
# Odłożenie zmian
git stash
# Lista odłożonych zmian
git stash list
# Przywrócenie ostatnio odłożonych zmian
git stash pop
# Przywrócenie konkretnego stasha
git stash apply stash@{0}
12. git reset i git revert – cofanie zmian
Czasem popełniamy błędy i musimy cofnąć zmiany. Git oferuje kilka sposobów:
# Cofnięcie do staging area (zachowuje zmiany w plikach)
git reset HEAD~1
# Cofnięcie commitów z usunięciem zmian (UWAGA: nieodwracalne!)
git reset --hard HEAD~1
# Bezpieczne cofnięcie - tworzy nowy commit "odwracający" zmiany
git revert HEAD
Pamiętaj, że git reset --hard jest operacją nieodwracalną – używaj jej ostrożnie, szczególnie na gałęziach współdzielonych z innymi.
Przydatne aliasy Git
Aby przyspieszyć pracę, możesz skonfigurować własne skróty (aliasy) dla często używanych komend:
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.lg "log --oneline --graph --all"
Po skonfigurowaniu aliasów możesz używać np. git st zamiast git status.
Plik .gitignore
Plik .gitignore pozwala wskazać, które pliki i foldery Git ma ignorować (np. pliki konfiguracyjne z hasłami, foldery node_modules, pliki tymczasowe):
# Przykładowa zawartość pliku .gitignore
node_modules/
.env
*.log
dist/
.DS_Store
Plik .gitignore umieszczamy w głównym katalogu projektu. Dobrą praktyką jest tworzenie go na samym początku pracy z projektem.
Podsumowanie
Opanowanie podstawowych komend Git to fundament pracy każdego programisty. Poniżej znajdziesz skróconą ściągę z omówionych poleceń:
- git init – inicjalizacja repozytorium
- git clone – klonowanie zdalnego repozytorium
- git status – sprawdzenie stanu repozytorium
- git add – dodanie plików do staging area
- git commit – zapisanie zmian
- git log – wyświetlenie historii commitów
- git branch – zarządzanie gałęziami
- git checkout / switch – przełączanie gałęzi
- git merge – scalanie gałęzi
- git pull / push – synchronizacja ze zdalnym repozytorium
- git stash – odkładanie zmian na bok
- git reset / revert – cofanie zmian
Git to narzędzie, które najlepiej poznaje się przez praktykę. Zacznij od prostych projektów, regularnie commituj swoje zmiany i stopniowo wprowadzaj bardziej zaawansowane techniki pracy z gałęziami. Wkrótce Git stanie się naturalną częścią Twojego workflow programistycznego.