Git dla początkujących. Kompletny poradnik Gita

Git dla początkujących. Kompletny poradnik Gita. Instalacja, konfiguracja i podstawowe komendy.

Git to podstawowe narzędzie programisty. Zapoznaj się z Gitem w kompletnym poradniku, który przygotowałem. Poradnik zawiera wstęp teoretyczny, proces instalacji i konfiguracji Gita oraz najważniejsze komendy do codziennej pracy.

Wstęp — Wprowadzenie do Git

Czym jest Git?

Git to rozproszony system kontroli wersji (DVCS), używany głównie do śledzenia zmian w kodzie oprogramowania. Git pozwala na sklonowanie repozytorium, czyli wykonanie kopii kodu na swoim urządzeniu. Pozwala on na równoległą pracę nad tym samym kodem źródłowym wraz z innymi osobami. W praktyce oznacza to, że wykonujemy kopie kodu źródłowego, a następnie tworzymy nowe odgałęzienie (branch) w celu dokonania jakiejś zmiany. Po zakończeniu pracy łączymy naszą wersję kodu z główną gałęzią. Taki sposób pracy pozwala na łatwą pracę wielu osób nad tym samym kodem, co przyśpiesza proces tworzenia oprogramowania w szczególności w rozproszonych zespołach.

Git pozwala również na śledzenie historii zmian naszego kodu. Możemy przełączyć się do dowolnego miejsca w historii. Zaletą tego jest możliwość podglądu wcześniejszej wersji kodu. W przypadku jakiegoś błędu jesteśmy w stanie cofnąć się do wersji, w której wszystko działa poprawnie, a następnie wysłać kod na produkcję, w międzyczasie naprawiając błąd.

Krótka historia Gita i jego powstania

Twórcą Gita jest Linus Torvalds twórca jądra Linux. Początek to rok 2005. Git powstał w wyniku konfliktu, który dotyczył licencji komercyjnego systemu BitKeeper. Linus zdecydował stworzyć własny system i powstał on zaledwie w ciągu kilku tygodni. Celem projektu było stworzenie narzędzia szybkiego, prostego i niezawodnego dla rozproszonych przepływów pracy.

Do dzisiaj Git jest aktywnie ulepszany i rozwijany. Narzędzie stało się standardem w procesie tworzenia oprogramowania.

Alternatywy dla Git

Git posiada kilka alternatywnych narzędzi. Z tej samej kategorii co Git możemy wymienić Mercurial. Jego funkcjonalności są bardzo zbliżone do Gita. Inną alternatywą jest starszy Subversion (SVN). Nadal jest używany głównie w korporacjach i starszych projektach. Git jest najbardziej popularnym narzędziem do kontroli wersji kodu. Zdecydowana większość ofert pracy programistycznych zawiera znajomość Gita w wymaganiach.

Podstawy Git

Czym jest system kontroli wersji?

Częściowo już to zostało opisane wyżej. System kontroli wersji to narzędzie do śledzenia zmian w kodzie źródłowym oprogramowania. Pozwala on na współpracę wielu osób oraz umożliwia przywracanie wcześniejszych wersji kodu.

Wyróżniamy trzy rodzaje kontroli wersji:

  • Lokalne systemy kontroli wersji,
  • Centralizowane systemy kontroli wersji (CVCS) np. SVN
  • Rozproszone systemy kontroli wersji (DVCS) np. Git lub Mercurial

Dlaczego Git jest taki popularny?

Git posiada ugruntowaną pozycję na rynku. Stał się popularny z kilku powodów. Jednym z nich jest prostota oraz szybkość pracy z tym narzędziem. Git umożliwia również pracę wielu osób nad tym samym kodem źródłowym bez potrzeby łączenia się z internetem czy serwerem. Łatwość oraz jego możliwości znacznie przewyższają inne rodzaje systemów kontroli wersji. Fakt utworzenia go przez Linusa Torvaldsa pewnie miał również niemałe znaczenie, ale to już moje przeczucie. Git używany jest na popularnych stronach takich jak GitHub czy GitLab.

Instalacja i konfiguracja Git

Sprawdź, czy Git jest już zainstalowany

Sprawdź w swoim terminalu czy Git jest zainstalowany. Wprowadź jedną z poniższych komend. Pierwsza powinna wyświetlić listę komend dla Gita, natomiast druga powinna wyświetlić wersję. Pomiń instalację, jeśli masz Gita w swoim systemie.

Bash
git
Bash
git version

Jak zainstalować Gita?

Proces instalacji Gita różni się w zależności od systemu operacyjnego oraz środowiska. Zazwyczaj nie będzie potrzeby wykonania tego kroku, ponieważ Git najczęściej zainstalowany jest domyślnie, w szczególności w systemach Linux czy macOS.

Windows

Tutaj mamy kilka opcji instalacji.

Git for Windows

Instalacja odbywa się przy pomocy instalatora. Pobierz plik i zainstaluj.

Z pomocą winget
Terminal
winget install --id Git.Git -e --source winget
WSL (Windows Subsystem for Linux)

Tutaj należy wykonać kroki Linuksowe (zależnie od wybranej dystrybucji).

macOS

Homebrew
Terminal
brew install git
MacPorts
Terminal
sudo port install git

Linux

Debian/Ubuntu

Instaluje ostatnią stabilną wersję dla danej wersji Debian/Ubuntu.

Terminal
apt-get install git

Instaluje najbardziej aktualną wersję Git.

Terminal
add-apt-repository ppa:git-core/ppa # apt update; apt install git
Fedora

Dla Fedory 21 i wcześniejszych wersji.

Terminal
yum install git

Dla Fedory 22 i późniejszych wersji

Terminal
dnf install git
Gentoo
Terminal
emerge --ask --verbose dev-vcs/git
Arch Linux
Terminal
pacman -S git
openSUSE
Terminal
zypper install git
Mageia
Terminal
urpmi git
Nix/NixOS
Terminal
nix-env -i git
FreeBSD
Terminal
pkg install git
Solaris 9/10/11 (OpenCSW)
Bash
pkgutil -i git
Solaris 11 Express
Terminal
pkg install developer/versioning/git
OpenBSD
Terminal
pkg_add git
Alpine
Terminal
apk add git

Podstawowa konfiguracja Git

Wszystkie opcje konfiguracyjne znajdziecie na stronie Git: Config.

Ustawianie nazwy użytkownika oraz email

Najważniejszą czynnością będzie skonfigurowanie nazwy użytkownika oraz email. Będą wykorzystywane do przypisywania zmian oraz do identyfikacji z zewnętrznymi systemami.

Użyj poniższych komend z Twoim danymi.

Terminal
git config --global user.email=TWOJ_ADRES_EMAIL_TUTAJ@EXAMPLE.COM
git config --global user.username=TWOJA_NAZWA_UZYTKOWNIKA

Parametr --global ustawia dane globalnie. Gdy chcemy ustawić je dla konkretnego repozytorium, należy użyć komendy bez tego parametru.

Terminal
git config user.email=TWOJ_ADRES_EMAIL_TUTAJ@EXAMPLE.COM
git config user.username=NAZWA_UZYTKOWNIKA

Edytor Git

Możemy też zmienić edytor, który będzie otwierany, gdy Git będzie potrzebował wprowadzenia jakiejś informacji tekstowej. Domyślny edytor to edytor ustawiony w systemie. Zmian dokonasz za pomocą komendy (w tym przykładzie zmieniamy edytor na emacs):

Terminal
git config --global core.editor emacs

Wyświetlenie ustawionej konfiguracji

Warto też znać komendę, która wyświetli listę ustawień.

Terminal
git config --list

Pierwsze kroki z Git

Tworzenie nowego repozytorium

Tworzenie nowego repozytorium w Git jest bardzo proste. Należy skorzystać z komendy git init w folderze, w którym chcemy zainicjalizować repozytorium Git.

Terminal
cd your-new-repo-folder
git init

W konsoli otrzymamy komunikat:

Initialized empty Git repository in /path-to-folder/your-new-repo-folder/.git/

Jeśli folder jest pusty, to po wpisaniu komendy `git status` otrzymamy następującą informację:

On branch master
No commits yet
nothing to commit (create/copy files and use "git add" to track)

W innym przypadku otrzymamy komunikat (dodałem pusty plik `index.html`):

On branch master

No commits yet

Untracked files:

  (use "git add <file>..." to include in what will be committed)

        index.html

Repozytorium Git jest gotowe do pracy.

Dodajmy wszystkie pliki do indeksu i utwórzmy pierwszy commit.

Terminal
git add .
git commit

git add . odpowiada za dodanie wszystkich plików do indeksu.

git commit tworzy commita. Otworzy nam się domyślny edytor systemowy, w którym możemy wpisać opis naszego commita. Po wszystkim zmiany są gotowe i można kontynuować pracę.

Struktura Git po utworzeniu repozytorium

Komenda git init tworzy nowy folder .git, który tworzy pliki oraz foldery potrzebne do działania repozytorium. W skład folderów i plików wchodzą: objects, refs/heads, refs/tags oraz pliki szablonów (template files). Zostaje również stworzony domyślny branch master. Nazwę domyślnego brancha podczas inicjalizacji repozytorium Git można zmienić poprzez parametr --initial-branch. Inicjalizacja nowego repozytorium nie dokonuje żadnych zmian w plikach, więc wykonanie tej komendy jest całkowicie bezpieczne.

Podstawowe komendy

Poniżej podstawowe komendy Git, które pozwolą na wykonanie najpotrzebniejszych operacji.

git add

Komenda odpowiada za dodawania plików do indeksu. Tylko indeksowane pliki są dodawane do commita. W praktyce oznacza to, że możemy wybrać, które zmiany mają zostać dodane do commita. Możemy dodać wszystkie za pomocą komendy git add . lub tylko wybrany plik np. git add README.md.

git commit

Zadaniem komendy jest zapisywanie zmian wraz z opisem przygotowanym przez użytkownika w repozytorium.

git push

Po zapisaniu zmian możemy je wysłać za pomocą git push na serwer zdalny (np. GitHub lub inny serwer).

git pull

Do pobrania najnowszych zmian z serwera służy komenda git pull. Jeśli są zmiany do pobrania, to zostaną one pobrane do lokalnego repozytorium.

Praca z gałęziami (branch)

Czym jest branch?

Branch pozwala na pracę nad kodem w odosobnieniu. Proces tworzenia nowego brancha można sobie wyobrazić jak proces kopiowania kodu, nad którym możemy pracować bez obaw, że zmiany innych mogą skomplikować naszą pracę. Oczywiście Git nie tworzy kopii wszystkich plików, tylko wykonuje snaphshoty co czyni go szybkim. Więcej na ten temat znajdziesz na oficjalnej stronie o branchach.

Krótko mówiąc: repozytorium posiada główną linię. Tworząc nowy branch tworzymy osobną linię, którą po zakończeniu prac ponownie łączymy z główną.

Jak utworzyć nowy branch?

Tworzenie brancha jest bardzo proste. Można to zrobić za pomocą komendy:

Terminal
git branch your-new-branch

Ta komenda tworzy tylko nowy branch, ale nie przełączamy się na niego. Do przełączenia się na nowy branch należy użyć:

Terminal
git checkout your-new-branch

Jeśli chcemy utworzyć nowy branch i jednocześnie się na niego przełączyć można jeszcze użyć komendy:

Terminal
git checkout -b your-new-branch

Łączenie zmian z master

Po skończonej pracy nad funkcjonalnością na osobnym branchu chcemy połączyć nowe zmiany, czyli zrobić merge. Do łączenia zmian głównej linii i naszej służy komenda git merge.

Przełącz się na branch główny.

Bash
git checkout master

Połącz zmiany.

Bash
git merge your-new-branch

Jeśli nie będzie konfliktów, to zmiany zostaną połączone. Jeśli pojawią się konflikty, należy rozwiązać je, sprawdzając konfliktujące się pliki. Wykorzystaj komendę git status do tego.

W standardowym procesie (w pracy) zamiast wykonywania merge bezpośrednio do głównego brancha, będzie trzeba stworzyć PR (Pull Request) lub MR (Merge Request). MR lub PR najpierw przechodzą przegląd kodu przez inne osoby w zespole, potem dopiero robimy merge (poprzez UI w przeglądarce).

Podsumowanie

Git to system kontroli wersji, który jest standardem w pracy programisty. Znajomość tego narzędzia to aktualnie wymóg i bez niego nie obejdziemy się, tworząc wszelkiego rodzaju oprogramowanie. Nie ma jednak czym się przejmować, ponieważ nauka Gita na poziomie pozwalającego swobodnie pracować jest szybka, więc nauczymy się go nawet kilka dni przed rozpoczęciem pracy.

Narzędzie to pozwala na pracę wielu osób nad tym samym kodem i znacznie ułatwia proces powstawania oprogramowania w zespołach rozproszonych. Git to nie tylko narzędzie używane przez firmy i korporacje, ale również jest użyteczne w prywatnych projektach. Ten system kontroli wersji, w porównaniu do konkurencyjnych rozwiązań z innych kategorii jest wydajniejszy.

Zachęcam do nauki i świadomego korzystania z tego narzędzia, szczególnie jeśli będziemy korzystać również z innych komend. Nieprzemyślane użytkowanie może sprawić wiele problemów dla wszystkich współpracowników. Polecam zapoznać się z oficjalną dokumentację Git.

Źródła

Dokumentacja Git – https://git-scm.com/

Oficjalny tutorial Git – https://git-scm.com/docs/gittutorial

Git Config – https://git-scm.com/docs/git-config

Short history of git – https://git-scm.com/book/en/v2/Getting-Started-A-Short-History-of-Git

Mercurial SCM – https://www.mercurial-scm.org/

SVN Wikipedia – https://pl.wikipedia.org/wiki/Subversion

Komentarze

Dodaj komentarz

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

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.