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.
-
Repozitář
Repozitář je celý projekt sledovaný Gitem. Obsahuje nejen všechny soubory projektu, ale také metadata a historii změn. Repozitář často není uložen pouze lokálně na našem zařízení, ale může se nacházet i na vzdáleném serveru. Abychom s takovým repozitářem mohli pracovat lokálně, vytvoříme jeho kopii – tzv. klon.
-
Branch (větev)
Git branch je oddělená linie vývoje. Umožňuje pracovat v projektu na nových funkcionalitách bez toho, aniž by se přepsala hlavní verze. Každý repozitář má alespoň jednu větev, která je typicky pojmenovaná jako main nebo master.
-
Commit
Commit je uložený bod v historii projektu. Obsahuje všechny změny v projektu včetně krátné zprávy.
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.
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í
-
Úkol číslo 1
Vytvořte si nový projekt a udělejte z něj repozitář. Přidejte do projektu soubor a uložte změny. Následně vytvořte novou branch a přidejte (a uložte) do ní další soubor. Následně větev mergnete do větve main. Odevzdejte screenshoty s obsahy obou souborů a výpis z git log.
-
Úkol číslo 2
Vytvořte si účet na GitHubu. Vytvořte nový, prázdný repozitář. Ten si naklonujte k sobě, přidejte do něj soubor a změny nahrajte opět na GitHub. Odevzdejte screenshot po vytvoření repozitáře a po přidání změn.