Git

Rozproszony system kontroli wersji śledzący zmiany w kodzie i umożliwiający pracę zespołową. Pozwala wracać do wcześniejszych wersji projektu.

Git to rozproszony system kontroli wersji (ang. distributed version control system), który śledzi każdą zmianę w plikach Twojego projektu i pozwala wielu osobom pracować nad tym samym kodem bez nadpisywania sobie roboty. Stworzył go w 2005 roku Linus Torvalds, ten sam, który napisał jądro Linuksa — potrzebował narzędzia do zarządzania ogromną liczbą zmian od programistów z całego świata. „Rozproszony” oznacza, że każdy ma na swoim dysku pełną kopię historii projektu, a nie tylko ostatnią wersję.

Jak to działa

Git zapisuje stan projektu w postaci commitów — czyli migawek (snapshotów) Twoich plików w danym momencie, opatrzonych opisem, autorem i datą. Każdy commit wskazuje na poprzedni, więc powstaje łańcuch, po którym możesz cofać się w czasie. Pracę rozdzielasz na branche (gałęzie): główną zwykle nazywa się main, a nową funkcję rozwijasz na osobnej gałęzi, żeby nie psuć działającego kodu. Gdy skończysz, scalasz ją z powrotem przez merge.

Co ważne: Git to nie to samo co GitHub. Git to program, który masz lokalnie. GitHub, GitLab czy Bitbucket to serwisy, które hostują repozytoria w chmurze i dodają wokół Gita całą obudowę — pull requesty, review kodu, CI/CD.

Przykład z praktyki

Typowy dzień wygląda tak: edytujesz pliki, sprawdzasz co się zmieniło przez git status, dodajesz zmiany do „poczekalni” komendą git add ., zapisujesz commit:

git commit -m "Dodaj logowanie przez Google"

Potem wysyłasz to na serwer przez git push, a żeby pobrać zmiany kolegów — git pull. Gdy coś spaprałeś, git log pokaże historię, a git checkout lub git revert pozwoli wrócić do działającej wersji.

Na co uważać

  • Konflikty (merge conflicts) to norma, nie katastrofa. Pojawiają się, gdy dwie osoby zmienią ten sam fragment. Git oznacza sporne linie, a Ty decydujesz, którą wersję zostawić.
  • Nie commituj sekretów — haseł, kluczy API, plików .env. Raz wrzucone do historii zostają tam, nawet po usunięciu. Od tego jest plik .gitignore.
  • Pisz sensowne opisy commitów. „fix” i „aaaa” za pół roku nikomu nie pomogą, łącznie z Tobą.

Pojęcia powiązane: repozytorium, commit, branch, merge, pull request, GitHub, GitLab, .gitignore, CI/CD, kontrola wersji.