Git — podstawowe komendy i workflow pracy zespołowej

Git jest dziś standardem praktycznie w każdym projekcie programistycznym.
Niezależnie od tego, czy aplikacja jest tworzona przez jedną osobę czy przez duży zespół, Git pozwala kontrolować zmiany w kodzie i bezpiecznie rozwijać projekt.
Największą zaletą Gita jest możliwość:
śledzenia historii zmian,
pracy na wielu branchach,
współpracy kilku developerów jednocześnie,
cofania błędów,
prowadzenia code review.

Inicjalizacja repozytorium
Utworzenie repozytorium Git

git init

Tworzy nowe repozytorium Git w aktualnym katalogu projektu.

Pobieranie projektu
Klonowanie repozytorium

git clone https://adres-repozytorium.git

Pobiera projekt z serwera na komputer lokalny.

Sprawdzanie zmian
Status repozytorium

git status

Pokazuje:
zmodyfikowane pliki,
nowe pliki,
pliki oczekujące na commit,
aktualny branch.

Historia commitów

git log

Wyświetla historię commitów projektu.
Bardziej skrócona wersja:

git log --oneline


Dodawanie zmian
Dodanie wszystkich plików

git add .

Dodaje wszystkie zmodyfikowane pliki do staging area.

Dodanie pojedynczego pliku

git add index.php


Commity
Utworzenie commita

git commit -m "Dodano logowanie użytkownika"

Commit zapisuje aktualny stan zmian wraz z opisem.

Poprawienie ostatniego commita

git commit --amend

Pozwala zmienić opis lub dodać brakujące pliki do ostatniego commita.

Branche
Branch pozwala pracować nad funkcjonalnością niezależnie od głównej wersji projektu.

Lista branchy

git branch


Utworzenie nowego brancha

git branch feature/login


Przełączenie brancha

git checkout feature/login


Utworzenie i przełączenie brancha jednocześnie

git checkout -b feature/login


Usunięcie brancha

git branch -d feature/login


Synchronizacja z repozytorium
Pobranie zmian

git pull

Pobiera i scala najnowsze zmiany z repozytorium.

Wysłanie zmian

git push

Publikuje commity na serwerze.

Pierwszy push brancha

git push -u origin feature/login

Tworzy branch na zdalnym repozytorium i ustawia tracking.

Merge i łączenie branchy
Połączenie branchy

git merge feature/login

Łączy branch feature/login z aktualnym branchem.
Najczęściej workflow wygląda tak:
przejście na main,
merge feature brancha,
push zmian.
Przykład:

git checkout main
git merge feature/login
git push



Konflikty merge
Konflikty pojawiają się wtedy, gdy dwie osoby zmodyfikują ten sam fragment kodu.
Git oznacza konflikt w pliku:

<<<<<<< HEAD
stary kod
=======
nowy kod
>>>>>>> feature/login


Po ręcznym rozwiązaniu konfliktu należy:

git add .
git commit



Cofanie zmian
Cofnięcie zmian przed commitem

git checkout -- index.php

Przywraca ostatnią wersję pliku.

Usunięcie pliku ze staging area

git reset index.php


Cofnięcie ostatniego commita

git reset --soft HEAD~1

Usuwa commit, ale pozostawia zmiany w plikach.

Twardy reset

git reset --hard HEAD~1

Usuwa commit oraz wszystkie zmiany.

Pobieranie bez merge
Fetch

git fetch

Pobiera zmiany z repozytorium bez automatycznego mergowania.

Rebase
Rebase brancha

git rebase main

Przenosi commity aktualnego brancha na najnowszą wersję main.
Rebase pomaga utrzymać czystszą historię commitów.

Stash
Przydatne, gdy trzeba chwilowo schować zmiany.
Zapisanie zmian

git stash


Przywrócenie zmian

git stash pop


Remote
Lista zdalnych repozytoriów

git remote -v


Dodanie zdalnego repozytorium

git remote add origin https://adres-repo.git


Typowy workflow pracy zespołowej
Najczęściej praca wygląda mniej więcej tak:

git pull
git checkout -b feature/new-task

# praca nad kodem

git add .
git commit -m "Dodano nową funkcjonalność"

git push -u origin feature/new-task


Następnie tworzony jest:
Pull Request w GitHub
lub
Merge Request w GitLab.
Po code review branch jest mergowany do głównej gałęzi projektu.

GitHub vs GitLab
GitHub
Najpopularniejsza platforma do hostowania repozytoriów Git.
Najczęściej kojarzona z:
open source,
prostym workflow,
dużą społecznością developerów.

GitLab
Bardziej rozbudowane środowisko DevOps.
Popularne funkcje:
CI/CD,
pipeline’y,
deployment,
self-hosting,
integracje firmowe.

Podsumowanie
Najważniejsze elementy codziennej pracy z Gitem:
branchowanie,
commitowanie zmian,
merge,
pull/push,
rozwiązywanie konfliktów,
code review,
Pull Requesty i Merge Requesty.
Nawet podstawowa znajomość tych operacji pozwala sprawnie pracować w większości zespołów developerskich.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *