Git

Na dnešním cvičení se podíváme na Git.

Git je distribuovaný verzovací systém, který slouží ke sledování změn v souborech (třeba ve zdrojovém kódu). Umožňuje porovnávat změny v souborech, vracet se ke starším verzím souborů nebo spolupracovat s ostatními na jednom projektu současně bez přepisování práce druhých. Používání Gitu se hodí všude tam, kde chceme mít přehled o změnách a jistotu, že o naši práci nepřijdeme.

Instalace

Abychom mohli Git a všechny jeho výhody využívat, musíme ho nejprve nainstalovat. Stačí stáhnout instalační balíček z oficiálních stránek projektu a projít průvodce instalací. Že máme Git nainstalovaný lze jednoduše ověřit v terminálu pomocí příkazu git --version.

S Gitem lze běžně pracovat pomocí příkazového řádku. Pokud máme nainstalované VS Code, můžeme s Gitem pracovat přímo v rámci tohoto prostředí. Stačí ve VS Code otevřít složku projektu a v levém panelu kliknout na Source Control. V tomto panelu máme dostupnou většinu operací, které dnes budeme využívat.

Základní pojmy

Abychom s Gitem mohli začít pracovat, musíme si nejprve zopakovat základní pojmy.

Working directories

To, jak funguje zaznamenávání změn v Gitu a jejich promítání do repozitáře je ukázáno na následujícím obrázku.

Git working directories

Práce s Gitem

Nyní si vyzkoušíme výše popsané prakticky.

Nejprve si vytvoříme novou složku s projektem a otevřeme ji.

mkdir novy-projekt
cd novy-projekt

Následně si vytvoříme repozitář pomocí následujícího příkazu. Tím se nám vytvoří i skrytá složka .git.

git init

Nyní budeme chtít do našeho repozitáře přidat dva soubory (index.html a style.css). Nejprve je musíme vytvořit. To můžeme udělat buď opět přes příkazový řádek (třeba pomocí příkazu touch), nebo skrz grafické rozhraní (ukázka). To, že máme ve working directory dva soubory, které zatím nejsou sledovány gitem, lze zjistit pomocí příkazu git status.

Aby byly soubory sledovány Gitem a přidány to staging directory, musíme provést následující příkaz. Tím si přidáme všechny unstracked soubory do sledování.

git add .

Nyní musíme soubory dostat do repozitáře (respektive do jeho main větve). Jak už víme, toho docílíme přes commit. Napíšeme tedy následující příkaz a přidáme krátkou zprávu u změnách.

git commit -m "Initial commit: added index.html and style.css"

Tím jsme přidali soubory do repozitáře. Historii commitů si můžeme zobrazit pomocí příkazu git log.

Práce s větvemi

Když už nyní umíme založit repozitář a provádět v něm změny, pojďme si ukázat vytvoření větví a práci s nimi. Představme si nyní situaci, kdy chceme upravit námi vytvořenou webovou stránku. Nechceme si ale rozbít námi už vytvořený kód. Proto vytvoříme novou branch a rovnou se do ní přepneme.

git branch feature/navigation
git checkout feature/navigation

V této větvi můžeme nyní libovolně upravovat náš kód. Třeba přidat navigaci (ukázka). Až práci dokončíme, musíme změny opět přidat do staging directory a následně commitnout do námi vytvořené větve. To již umíme, opět použijeme příkazy git add a git commit. Veškeré změny jsou teď zaznamenané v branchi feature/navigation. Jelikož už jsme dokončili vývoj, chceme tyto změny začlenit i do hlavní branche projektu (do repozitáře). Nejprve se musíme přepnout do hlavní větve. Následně provedeme sloučení.

git checkout main
git merge feature/navigation

Výše zmíněné operace a příkazy lze provést přímo ve VS Code pomocí jednoduchého grafického rozhraní.

GitHub

V praxi budeme na projektech velmi často pracovat v týmu. To znamená, že repozitáře budou uložené na vzdáleném serveru. K tomuto účelu slouží platforma GitHub. GitHub je online platforma, která slouží k ukládání a správě Git repozitářů. Umožňuje vývojářům sdílet svůj kód, spolupracovat na projektech a sledovat změny v historii vývoje. Kromě samotného hostování repozitářů nabízí také nástroje pro týmovou spolupráci, jako jsou pull requesty, code review nebo správa problémů (issues). GitHub tedy rozšiřuje Git o webové rozhraní a funkce pro efektivní spolupráci.

Pro práci s GitHubem je potřeba se nejprve zaregistrovat na stránkách projektu. Následně získáme prostředí, ve kterém můžeme vytvářet a spravovat repozitáře. Existuje několik možných postupů, my si však ukážeme ten nejjednodušší.

Na GitHubu vytvoříme nový repozitář. Ten si naklonujeme pomocí příkazu git clone odkaz_na_repozitar a vytvoříme si tak jeho lokální kopii. Se změnami budeme pracovat jako doposud. Přidáme je do staging directory a následně commitneme. V tento moment máme ale změny uložené pouze v lokální kopii repozitáře. Abychom změny dostaly i na GitHub, musíme provést příkaz git push.

Práce s dalšími branchemi je opět velmi podobná. Tak jako jsme to dělali doposud, z lokální kopie repozitáře si vytvoříme novou branch. No ní opět provedeme změny, přidáme a commitneme. Pokud budeme chtít tuto větev dostat na server, použijeme následující příkaz:

git push -u origin nazev_branche

Nyní si větev můžeme prohlídnout i v prostředí GitHubu. Pokud budeme nyní chtít dostat změny z této větve do mainu, musíme vytvořit Pull Request. Pull Request je pouze žádost o začlenění jedné větve do jiné větve (kvůli bezpečnosti). Po zkontrolování merge conflictů můžeme branch zamergovat.

Úkoly k dnešnímu cvičení