Home Bez kategorii Git kontrola wersji poradnik: od pierwszego commita do sprawnego zespołu

Git kontrola wersji poradnik: od pierwszego commita do sprawnego zespołu

admin
Git kontrola wersji poradnik: od pierwszego commita do sprawnego zespołu - ilustracja artykulu

Git kontrola wersji poradnik: od pierwszego commita do sprawnego zespołu

Ten git kontrola wersji poradnik prowadzi od instalacji narzędzia po sprawną pracę w kilkuosobowym zespole. Dobry git kontrola wersji poradnik nie kończy się na trzech komendach — pokazuje, jak repozytorium chroni kod przed przypadkową utratą, jak gałęzie rozdzielają eksperymenty od wersji produkcyjnej i jak historia zmian staje się dokumentacją projektu. Git powstał w 2005 roku jako narzędzie do rozwoju jądra Linuksa i obsługuje repozytoria liczące setki tysięcy commitów bez zauważalnego spowolnienia. Rozproszona architektura oznacza, że każdy klon zawiera pełną historię — praca offline jest w pełni możliwa, a awaria serwera nie kasuje dorobku zespołu. Każdą komendę opisano tak, żeby dało się ją przepisać wprost do własnego terminala, bez przeskakiwania między dokumentacją a przykładami z forów. W kolejnych sekcjach znajdziesz konfigurację, zestaw komend używanych codziennie, model gałęzi dopasowany do małych zespołów, wdrożenia na serwer oraz sprzęt, który realnie skraca czas spędzany w terminalu.

Czym jest Git i co realnie daje kontrola wersji

Git zapisuje stan całego projektu w postaci migawek, a nie różnic między plikami. Każdy commit dostaje 40-znakowy identyfikator SHA-1, który jednoznacznie opisuje zawartość drzewa katalogów. Dzięki temu porównanie dwóch wersji sprzed pół roku trwa ułamek sekundy, nawet w repozytorium ważącym kilkaset megabajtów.

Rozproszony model odróżnia Gita od starszych systemów typu SVN. Klon repozytorium zawiera całą historię, więc commit, przeglądanie logów i tworzenie gałęzi działają bez połączenia z siecią. Ten git kontrola wersji poradnik zakłada właśnie taki tryb pracy: lokalnie szybko, a synchronizacja z serwerem następuje wtedy, gdy sam o tym zdecydujesz.

Korzyść widać najszybciej przy awarii. Nadpisany plik konfiguracyjny przywracasz komendą git checkout w kilka sekund, a błędne wdrożenie cofasz do konkretnego commita zamiast odtwarzać kopię zapasową sprzed doby. W zespole dochodzi jeszcze jedno: historia pokazuje, kto i dlaczego zmienił daną linię kodu.

Instalacja i konfiguracja Gita krok po kroku

Na Windowsie instalujesz pakiet Git for Windows, który dokłada powłokę Git Bash i emulację poleceń POSIX. W dystrybucjach Debiana wystarczy apt install git, w Fedorze dnf install git, a na macOS narzędzie pojawia się razem z Command Line Tools. Instalacja zajmuje zwykle mniej niż dwie minuty.

Po instalacji sprawdź wersję komendą git –version. Jeśli terminal zwraca numer, środowisko działa. Kolejny krok to wybór edytora domyślnego dla komunikatów commitów — ustawienie core.editor na Visual Studio Code lub Vim oszczędza nerwów każdemu, kto pierwszy raz trafił do Vima bez wiedzy, jak z niego wyjść.

Tożsamość, klucze SSH i plik .gitignore

Każdy commit podpisuje się danymi z konfiguracji globalnej. Ustaw je raz: git config –global user.name oraz git config –global user.email. Bez tego historia wypełnia się wpisami od nieznanego autora, co przy przeglądzie kodu sprzed roku potrafi zablokować ustalenie, kto wprowadził konkretną zmianę.

Klucz SSH generujesz poleceniem ssh-keygen -t ed25519 i wgrywasz część publiczną do panelu GitHuba, GitLaba lub własnego serwera. Od tego momentu push nie prosi o hasło. Plik .gitignore trzymaj w repozytorium od pierwszego commita — dopisanie go później nie usuwa już śledzonych plików.

  • node_modules oraz vendor — katalogi odtwarzane z pliku zależności
  • .env, wp-config.php i inne pliki z hasłami do bazy danych
  • Katalogi uploadów, w tym wp-content/uploads w instalacjach WordPressa
  • Pliki tymczasowe systemu: .DS_Store, Thumbs.db oraz katalog .idea
  • Skompilowane paczki, mapy źródeł i logi generowane przy każdym buildzie

Komendy, których używasz każdego dnia

Codzienna praca sprowadza się do czterech ruchów: sprawdzasz stan roboczy, dodajesz zmiany do poczekalni, zatwierdzasz je commitem i wysyłasz na zdalne repozytorium. Reszta poleceń to narzędzia awaryjne, po które sięgasz raz na tydzień albo rzadziej, gdy coś pójdzie inaczej, niż zakładałeś.

KomendaDziałanieKiedy jej używasz
git statusPokazuje zmodyfikowane i nieśledzone plikiPrzed każdym commitem
git add -pDodaje zmiany fragmentami, z podglądemGdy w pliku mieszają się dwie poprawki
git commit -mZatwierdza poczekalnię wraz z opisemPo zamknięciu jednego zadania
git pull –rebasePobiera zmiany i przenosi twoje commity na wierzchPrzed rozpoczęciem pracy
git log –onelineWyświetla skróconą historię projektuPrzy szukaniu źródła błędu
git revertTworzy commit odwracający wskazane zmianyPo wdrożeniu wadliwej wersji

Ten git kontrola wersji poradnik celowo pomija komendy egzotyczne. Zamiast filter-branch czy reflog na starcie lepiej wyćwiczyć rytm: mały commit, jasny opis, jedna zmiana logiczna na wpis. Komunikat w trybie rozkazującym, do 50 znaków w pierwszej linii, czyta się później znacznie szybciej.

Gałęzie, scalanie i konflikty

Gałąź w Gicie to wskaźnik na commit, dlatego jej utworzenie kosztuje kilkadziesiąt bajtów i ułamek sekundy. Model trunk-based sprawdza się w zespołach do pięciu osób: jedna gałąź główna, krótkie gałęzie zadaniowe scalane w ciągu jednego lub dwóch dni, żaden branch nie żyje tygodniami.

Konflikt pojawia się wtedy, gdy dwie gałęzie zmieniły te same linie. Git wstawia znaczniki oddzielające obie wersje, a ty decydujesz, co zostaje. Po edycji dodajesz plik komendą git add i kończysz scalanie. Częstsze pobieranie zmian z gałęzi głównej zmniejsza liczbę takich sytuacji o rząd wielkości.

Git w projektach webowych i przy wdrożeniach

W agencjach, których specjalnością jest projektowanie stron internetowych, repozytorium obejmuje motyw, wtyczki autorskie i pliki buildu, a nie całą instalację CMS-a. Baza danych oraz katalog uploadów zostają poza wersjonowaniem, ponieważ zmieniają się przy każdej publikacji i w kilka miesięcy rozdęłyby repozytorium do kilku gigabajtów.

Wyszukiwane hasło wordpress logowanie prowadzi do pliku wp-login.php, którego w repozytorium po prostu nie ma — dane dostępowe trzymasz w zmiennych środowiskowych. Wdrożenie na serwer OVH VPS realizujesz przez git pull po stronie maszyny albo przez hook post-receive, który rozpakowuje najnowszą gałąź produkcyjną do katalogu z witryną.

Historia commitów przydaje się też przy analizie ruchu. Gdy pozycjonowanie strony nagle traci na skuteczności, sprawdzasz w logu, która zmiana szablonu wypadła w tym samym tygodniu — często winny jest nadpisany plik robots.txt albo przebudowa nagłówków. Tak samo diagnozujesz błędy w pliku feedu dla Google Merchant.

Git kontrola wersji poradnik: od pierwszego commita do sprawnego zespołu - zdjecie w tresci
Zdj. tematyczne: Git kontrola wersji poradnik: od pierwszego c (fot. Godfrey Atima/Pexels)

Zespoły porównujące narzędzia do współpracy sprawdzają hasło google workspace cena mniej więcej wtedy, gdy repozytorium przestaje być tylko kodem, a staje się osią procesu. Sensowne jest wtedy powiązanie commitów z zadaniami, bo pozycjonowanie strony w Google opiera się na wdrożeniach, które da się odtworzyć i cofnąć.

Stanowisko pracy, które skraca czas spędzany w terminalu

Praca z Gitem to praca w terminalu, więc klawiatura mechaniczna przestaje być gadżetem. Przełączniki liniowe w rodzaju Gateron Red albo taktylne Cherry MX Brown skracają dystans do aktywacji o ułamek milimetra, co po kilku tysiącach znaków dziennie przekłada się na mniej pomyłek przy nazwach gałęzi.

Ceny rozkładają się szeroko. Kompaktowa klawiatura mechaniczna 60 procent kosztuje od około 250 zł w wersjach budżetowych do 900 zł za modele z hot-swapem i podwójnie wtryskiwanymi klawiszami. Klawiatura gamingowa mechaniczna z podświetleniem RGB i makrami zwykle mieści się w przedziale 400–800 zł.

Drugim wąskim gardłem jest ekran. Monitor do komputera o przekątnej 27 cali i rozdzielczości 2560×1440 mieści obok siebie edytor, terminal i podgląd diffa bez zjeżdżania czcionki poniżej czytelnego rozmiaru. Koszt takiego panelu IPS zaczyna się w okolicach 800 zł, a wersje 4K kosztują od 1500 zł.

Projektanci pracujący nad grafiką w tym samym repozytorium dokładają jeszcze tablet graficzny Wacom — model Intuos S kosztuje około 350 zł, a większe Intuos Pro przekraczają 1500 zł. Pliki źródłowe z takich narzędzi wersjonuje się przez Git LFS, żeby historia nie urosła do kilkunastu gigabajtów.

Jak cofnąć ostatni commit bez utraty zmian w plikach?

Użyj komendy git reset –soft HEAD~1. Cofa ona wskaźnik gałęzi o jeden commit, ale zostawia wszystkie zmiany w poczekalni. Pliki na dysku pozostają nietknięte, więc możesz poprawić opis, dołożyć zapomniany plik i zatwierdzić całość ponownie, bez śladu po pomyłce w historii lokalnej.

Jeśli chcesz jedynie zmienić treść komunikatu, wystarczy git commit –amend. Ta komenda nadpisuje ostatni wpis nowym opisem i nowym identyfikatorem SHA. Działa bezpiecznie dopóty, dopóki commit nie trafił na zdalne repozytorium i nie pobrał go nikt z zespołu. Po pushu sytuacja wygląda inaczej.

Gdy commit jest już opublikowany, sięgnij po git revert. Tworzy on nowy wpis odwracający zmiany, zamiast wycinać cokolwiek z historii. Współpracownicy nie muszą wtedy robić forsownych pobrań, a ślad po błędnej wersji zostaje udokumentowany w logu projektu. To najbezpieczniejszy wariant przy pracy zespołowej.

Czy Git sprawdza się przy plikach graficznych i dużych zasobach?

Standardowy Git zapisuje każdą wersję pliku binarnego w całości, bo nie potrafi wyliczyć sensownej różnicy między dwoma plikami PSD. Dziesięć wersji makiety ważącej 200 MB oznacza więc około dwóch gigabajtów w historii, których nikt już nie usunie zwykłym commitem. Klon takiego repozytorium trwa minutami.

Rozwiązaniem jest Git LFS, czyli Large File Storage. Rozszerzenie podmienia zawartość dużych plików na krótkie wskaźniki tekstowe, a same zasoby trzyma na osobnym serwerze. Repozytorium pozostaje lekkie, a projektant nadal wersjonuje pliki wychodzące z tabletu czy programu graficznego. Konfiguracja zajmuje dwie komendy: git lfs install i git lfs track.

Limity darmowych planów bywają niskie — u części dostawców to jeden gigabajt transferu miesięcznie, a pakiety rozszerzające kosztują kilkanaście złotych. Przy dużych bibliotekach zasobów tańszym wyjściem bywa własny serwer z magazynem obiektowym i repozytorium ograniczonym wyłącznie do kodu źródłowego. Decyzję podejmij przed pierwszym wdrożeniem.

Co zrobić, gdy git push kończy się odrzuceniem zmian?

Komunikat rejected oznacza zwykle, że zdalna gałąź zawiera commity, których nie masz lokalnie. Ktoś wysłał swoją pracę wcześniej. Pobierz zmiany komendą git pull –rebase, a Git przeniesie twoje commity na wierzch świeżej historii, zachowując liniowy przebieg projektu. Następnie powtórz push.

Druga częsta przyczyna to brak uprawnień albo ochrona gałęzi głównej. Serwis odrzuca wtedy zapis bezpośredni i wymaga pull requesta z zatwierdzeniem recenzenta. Sprawdź ustawienia repozytorium w panelu — reguła branch protection potrafi blokować push nawet właścicielowi projektu. Rozwiązaniem jest wtedy osobna gałąź zadaniowa.

Trzeci scenariusz to nieaktualny klucz SSH lub token dostępu. Błąd wygląda wtedy na problem z uprawnieniami, choć dotyczy uwierzytelniania. Wygeneruj nowy klucz i wgraj go do panelu, a potem powtórz operację — jak opisuje ten git kontrola wersji poradnik w sekcji o konfiguracji.

Zobacz też