Lekce 30 - Verzovací nástroj Git a Visual Studio Code
V minulé lekci, Nejčastější chyby JS začátečníků, děláš je také?, jsme si ukázali nejčastější chyby
začátečníků v JavaScriptu, např. ohledně pojmenování kolekcí,
Boolean výrazů a DRY.
Základní konstrukce jazyka JavaScript máme za sebou. Než kurz zcela opustíme, naučíme se pracovat s nástrojem Git, který nám pomáhá efektivně spravovat a sledovat změny v našem kódu. Často se také používá pro spolupráci ve vývojových týmech. S Gitem budeme pracovat pomocí integrace v IDE Visual Studio Code a ukážeme si i postup pomocí příkazové řádky nebo aplikace GitHub Desktop.
Co je to Git?
Git je nástroj pro správu verzí, který programátorům umožňuje sledovat historii všech změn v projektu. Můžeme se tak jednoduše vrátit k libovolné předchozí verzi našeho kódu, která byla ještě funkční. Git nám také umožňuje vrátit se zpět, když zjistíme, že nám nový způsob řešení nakonec nevyhovuje. Verze lze organizovat do tzv. větví, které si můžeme libovolně pojmenovávat.
Git si můžeme rovněž představit jako magický deník, který si pamatuje každý náš krok při psaní kódu.
Proč používat Git?
Git nám pomůže organizovat kód ve vlastních projektech. Největší přínos Gitu spočívá v práci v týmu, kdy umožňuje jednoduše vidět, které konkrétní změny kdo v aplikaci provedl a kde. Když se stane, že dva lidé editovali tentýž soubor, lze změny sloučit (zamergovat). Díky tomu se nestane, že by si členové vývojového týmu přepisovali kód pod rukama. Proto je základní znalost práce s Gitem očekávána na většině pracovních pozic (kde existuje nějaký vývojový tým). Když potenciálnímu zaměstnavateli ukážeme své projekty např. na GitHubu, budeme vypadat mnohem seriózněji, než když je budeme sdílet např. přes Google Disk.
Git lze používat do jisté míry i jako zálohu. Změny však musíme ručně a pravidelně nahrávat do vzdáleného repozitáře. Aplikace také obvykle obsahují i další soubory kromě zdrojových kódů, které se do Gitu nedávají. Proto minimálně začátečníkům doporučujeme stále používat synchronizovaná úložiště typu Dropbox, abychom o své projekty nepřišli při ztrátě nebo poškození počítače.
Základní příkazy Gitu
S Gitem se často pracuje pomocí příkazového řádku. My si ukážeme, jak s ním pracovat v grafickém rozhraní Visual Studio Code, v příkazovém řádku i v desktopové aplikaci GitHub Desktop. Budeme používat následující příkazy:
- Clone - Zkopíruje repozitář z GitHubu na náš počítač.
- Add – Přidá změny k budoucímu uložení.
- Commit – Uloží změny tak, že vytvoří záznam o tom, co se od posledního commitu (uložení) změnilo.
- Push – Nahraje všechny naše lokální změny (commity) na vzdálený server, odkud si je mohou ostatní programátoři stáhnout.
- Pull – Stáhne ze vzdáleného serveru všechny změny od ostatních programátorů do naší verze kódu.
Příkazů je samozřejmě více, těm je pak věnován celý kurz. Pro naše účely nám to zatím stačí.
Git repozitář
Git repozitář si můžeme představit jako speciální složku na našem počítači, která obsahuje všechny soubory projektu, ale kromě toho také informace o historii všech změn, které jsme v těchto souborech udělali. Pokaždé, když uděláme nový commit, Git uloží informace o změnách právě do repozitáře.
Vzdálený vs. lokální repozitář
Repozitář je uložený na našem počítači (lokální repozitář), ale také na serveru na internetu (vzdálený repozitář). Pokaždé, když provedeme push, odešleme všechny změny z našeho lokálního repozitáře do vzdáleného. Tam si je pak mohou prohlížet další lidé. A naopak, když provedeme pull, stáhneme nejnovější změny ze vzdáleného repozitáře do svého lokálního repozitáře (např. změny provedené ostatními).
Vytvoření vzdáleného repozitáře na GitHub
GitHub je jednou z nejznámějších platforem pro hostování Git repozitářů, a proto ji budeme využívat i my v tomto tutoriálu.
Registrace
Abychom na GitHubu mohli vytvořit vlastní repozitář, musíme se nejprve zaregistrovat. Přejdeme na oficiální stránky GitHub a provedeme registraci, kde si nastavíme:
- e-mailovou adresu,
- heslo,
- svou unikátní přezdívku.
V následující ukázce využíváme zavináč @.
Zavináč na české klávesnici můžeme napsat pomocí klávesy
pravý ALT a písmene V:

Postup registrace vypadá takto:

Vytvoření vzdáleného repozitáře
Po úspěšné registraci se přihlásíme do svého účtu. V pravém horním rohu klikneme na tlačítko s plusem a šipkou (+ ▼) a z menu vybereme položku New repository:

Následně vidíme formulář k vytvoření repozitáře. Pojďme si podrobněji projít jednotlivé položky a jejich význam:
- Repository name - Název repozitáře je
krátký, jednoduchý a popisuje, co obsahuje. Vyhýbáme se speciálním
znakům a namísto mezer píšeme spojovníky (
-). - Public / Private - Viditelnost určuje, kdo může repozitář vidět a přistupovat k němu. Nejčastěji vytváříme privátní repozitáře, ke kterým máme přístup pouze my či naši kolegové. Veřejné repozitáře vytváříme zejména pro tzv. open source projekty, které povzbuzují veřejnou spolupráci.
- README file - Tento dokument je první věc, kterou uživatel vidí, když navštíví náš repozitář. Obsahuje základní popis projektu, instrukce pro instalaci, použití, přispívání do projektu a tak dále.
- .gitignore - Již víme, že Git repozitář by měl
obsahovat primárně zdrojový kód a související konfigurační soubory.
Tento soubor se používá k vyloučení ostatních souborů
nebo složek z verzovacího systému. Může se například jednat o složku
node_modules/, logovací.logsoubory a podobně. - License - Licence v repozitáři určuje, jak mohou ostatní používat, kopírovat, modifikovat či distribuovat náš projekt.
Nový repozitář pojmenujeme např. git-tutorial, viditelnost
nastavíme na Private a dále přidáme README:

Teď, když máme formulář vyplněný, klikneme na tlačítko Create repository a počkáme, než se vzdálený repozitář vytvoří:

Tímto máme vzdálený GitHub repozitář vytvořený a můžeme přejít na práci s Gitem ve Visual Studio Code 😊
Instalace Gitu
Nejprve potřebujeme mít na našem počítači nainstalovaného Git klienta. Přejdeme na stránku https://git-scm.com/, kde klikneme na tlačítko "Install for Windows":

Následně klikneme na "Click here to download":

Po spuštění instalátoru stačí klikat na tlačítko Next až do poslední obrazovky, kde klikneme na Install. Tím máme Git klienta nainstalovaného na svém počítači.
Pokud Git používáme poprvé, bude nutné nastavit uživatelské jméno a e-mail, aby nás Git mohl identifikovat jako autora změn. Toto nastavení se provádí jednorázově a platí pro všechny Git projekty na daném počítači. K tomu využijeme terminál ve Visual Studio Code. Otevřeme ho kliknutím na záložku Terminal v horním menu a výběrem možnosti New Terminal. Do nově otevřeného okna postupně zadáme následující příkazy, přičemž mezi uvozovky dosadíme své jméno a e-mail:
Windows PowerShell git config --global user.name "Josef Plachý" git config --global user.email "[email protected]" git config --global --list
Poslední příkaz slouží pro kontrolu aktuálního nastavení. Pokud zjistíme chybu, můžeme celý proces nastavení zopakovat.
Ukážeme si postupné kroky práce s Gitem při vytváření nových verzí (tzv. commitů) a následném nahrávání na GitHub.
Git Clone
Vytvořit lokální repozitář jde více způsoby. Pokud již vzdálený
repozitář existuje, jako v našem případě, stačí využít
klonování. Příkaz git clone tedy zkopíruje
vzdálený repozitář do lokálního v našem počítači.
S Gitem lze pracovat přímo v IDE, přes příkazovou řádku nebo pomocí desktopové aplikace. Doporučujeme pro začátek používat integraci přímo v IDE. Pokud by postup nefungoval, např. z důvodu změny rozhraní IDE, můžete postupovat podle alternativního návodu, na který se přepneme pomocí tlačítek níže.
-
Pokud jsme měli Visual Studio Code spuštěný během instalace Gitu, restartujeme jej. Otevřeme si Visual Studio Code a v levém menu klikneme na Source Control a následně v nabídce zvolíme Clone Repository:

Poté se nám zobrazí nová nabídka, ve které klikneme na Clone from GitHub a přihlásíme se ke svému účtu:

Pokud v nabídce možnost Clone from GitHub nevidíte, nainstalujte si do Visual Studio Code pluginy GitHub Pull Requests and Issues a GitHub Repositories.
Otevře se prohlížeč, kde po případném přihlášení zvolíme GitHub účet se kterým se chceme propojit:

Po přihlášení autorizujeme integraci do Visual Studio Code:

Nyní v nabídce vidíme seznam s našimi vzdálenými GitHub repozitáři. Z nabídky vybereme repozitář, který jsme si v předchozím kroku založili:

Poté zvolíme cestu, kam se má repozitář naklonovat a chvíli počkáme:

Tímto se vzdálený repozitář naklonuje (zkopíruje) z GitHubu do počítače. Poté nás Visual Studio Code vyzve, zda chceme repozitář ihned otevřít. Tuto možnost potvrdíme kliknutím na tlačítko Open:

V případě, že vám vyskočí výstražné okno varující před nebezpečím škodlivého kódu, zvolte možnost Yes, I trust the authors potvrzující, že klonovanému projektu důvěřujete:

-
V praxi se velmi často k práci s Git používá terminál (příkazový řádek). Jeho výhodou je stejný způsob použití bez ohledu na operační systém (Windows, macOS, Linux) a IDE. Ukažme si tedy, jak s ním pracovat.
Ve Windows si nejdříve otevřeme terminál Git Bash. V Průzkumníkovi si najdeme adresář s Visual Studio Code projekty, do kterého budeme chtít naklonovat náš
git-tutorialprojekt. Může to být například:C:\Users\vase_jmeno\vscode\. Na adresář klikneme pravým tlačítkem myši a v menu zvolíme Zobrazit další možnosti a Open Git Bash here:
Otevře se nám speciální terminál, do kterého budeme postupně psát git příkazy. Na operačních systémech macOS a Linux nám stačí otevřít si klasický terminál (konzoli) ve složce
vscode.Do terminálu napíšeme příkaz:
git clone adresa_naseho_github_projektu
Adresu našeho projektu můžeme získat z URL v našem prohlížeči na stránce GitHub. Příkaz by měl vypadat např. následovně:
git clone https://github.com/D3NY/git-tutorialkdeD3NYnahradíme naší přezdívkou (username), kterou jsme si zvolili při registraci na GitHub.Po potvrzení Enter se nám otevře okno Connect to GitHub s výzvou k přihlášení se ke GitHub. Zvolíme možnost Sign in with your browser:

V terminálu se nám zatím vypíše informace o tom, že autentifikaci máme dokončit ve svém prohlížeči:
Cloning into 'git-tutorial'... info: please complete authentication in your browser...
Přejdeme do okna v prohlížeči a vyplníme naše přihlašovací údaje a heslo. Následně potvrdíme kliknutím na tlačítko Sign in:

Zbývá nám ještě potvrdit, že opravdu chceme autorizovat přístup Git Credential Manager k našemu GitHub účtu:

Po potvrzení úspěšné autentifikace můžeme okno prohlížeče zavřít:

V terminálu máme mezitím výpis, ze kterého nás nejvíce zajímá poslední řádek
Receiving objects: 100%, potvrzující úspěch operace:remote: Enumerating objects: 4, done. remote: Counting objects: 100% (4/4), done. remote: Compressing objects: 100% (3/3), done. remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0) Receiving objects: 100% (4/4), done.
Ve Visual Studio Code otevřeme náš projekt git-tutorial výběrem z menu File -> Open....
V případě, že vám vyskočí výstražné okno varující před nebezpečím škodlivého kódu, zvolte možnost Yes, I trust the authors potvrzující, že klonovanému projektu důvěřujete:

- Spustíme program GitHub Desktop. Na stránce
Welcome to GitHub Desktop zvolíme možnost Sign in
GitHub.com:

Na další stránce vyplníme naše přihlašovací údaje a heslo k GitHub účtu. Následně potvrdíme kliknutím na tlačítko Sign in:

Vzápětí ještě potvrdíme otevření GitHubDesktop aplikace:

Zbývá nám ještě potvrzení nastavení identifikace příštích commitů jednoduše kliknutím na tlačítko Finish:

V menu vybereme File -> Clone repository...:

Vyhledáme náš vzdálený repozitář
git-tutoriala potvrdíme kliknutím na Clone:
Ve Visual Studio Code otevřeme náš projekt git-tutorial výběrem z menu File -> Open Folder....
V případě, že vám vyskočí výstražné okno varující před nebezpečím škodlivého kódu, zvolte možnost Yes, I trust the authors potvrzující, že klonovanému projektu důvěřujete:

Git Add
Otevřeme průzkumníka souborů kliknutím na záložku Explorer v
levém panelu našeho Visual Studio Code (alternativně můžeme použít
klávesovou zkratku Ctrl + Shift + E). V
průzkumníku klikneme pravým tlačítkem myši, v nabídce zvolíme New
Folder... a nový adresář pojmenujeme src/:

Poté klikneme pravým tlačítkem myši na adresář src/,
zvolíme New File... a soubor pojmenujeme
HelloWorld.html:

Do souboru vložíme následující kód, který jistě poznáváte:
<!DOCTYPE html> <html lang="cs-cz"> <head> <meta charset="utf-8" /> <title>Ahoj světe v JavaScriptu</title> </head> <body> <script type="text/javascript"> document.body.innerHTML += "Ahoj světe!"; </script> </body> </html>
Výsledek by mohl vypadat následovně. Můžeme si všimnout, že ve
stromové struktuře má soubor HelloWorld u sebe písmeno
U jako Untracked. To znamená, že Git tento soubor zatím
nesleduje (není ve verzování).

-
V levém menu klikneme na Source Control, a na znaménko + (Stage Changes) napravo od našeho souboru. To přidá změny do staging area, aby byly zahrnuty do příštího commitu:

-
V Git Bash terminálu přejdeme do naší složky s projektem pomocí příkazu
cd(change directory):cd git-tutorial
Příkazem
git statussi můžeme ověřit, které soubory a adresáře (obarvené červenou barvou) můžeme přidávat (git add) do další verze:
Následně můžeme pomocí příkazu
git addpřidat složkusrc/včetně souboruHelloWorld.htmldo takzvané staging fáze, tedy připravené na vytvoření nové verze (commit):git add src/
Příkazem
git statussi můžeme ověřit, které soubory (obarvené zelenou barvou) budou nahrány do příští verze (commit):
-
V aplikaci se nám v levé části zobrazí soubory, které jsou buď nové, nebo v nich došlo k nějaké změně. Vidíme tam zatím jenom náš soubor
src\HelloWorld.html, který necháme označený fajfkou. Tím říkáme, že tento soubor chceme zahrnout do dalšího commitu:
Nyní je na čase vytvořit náš první commit.
Git Commit
-
V levé záložce Source Control, dále do textového pole Message napíšeme, co jsme udělali. My jsme do repozitáře přidali aplikaci Hello World, napíšeme tedy např. Add HelloWorld application a klikneme na tlačítko Commit:

Správně napsaná commit zpráva by měla jasně a stručně popisovat, jaké změny daný commit přináší. Dále existují různé konvence, ale obecně platí, že zprávy píšeme v imperativu a ideálně v anglickém jazyce.
Commit amend
Při vytváření commitu se při kliknutí na ▼ u tlačítka Commit zobrazí možnost Commit (Amend), která nám umožní upravit poslední commit. Tato možnost je užitečná, pokud jsme udělali chybu ve svém posledním commitu, například zapomněli přidat nějaký soubor, nebo chceme změnit commit zprávu.
-
Můžeme přistoupit k vytvoření nové verze (commitu). Samotný
git commitmusí mít uvedenou zprávu (Commit message). Správně napsaná commit zpráva by měla jasně a stručně popisovat, jaké změny daný commit přináší. Dále existují různé konvence, ale obecně platí, že zprávy píšeme v imperativu a ideálně v anglickém jazyce.Do terminálu napíšeme:
git commit -m "Add HelloWorld application"
Výstup úspěšného příkazu vypadá následovně:

-
Každá verze (commit) musí mít uvedenou zprávu popisující změny v té dané verzi, tzv. Commit message. Správně napsaná commit zpráva by měla jasně a stručně popisovat, jaké změny daný commit přináší. Dále existují různé konvence, ale obecně platí, že zprávy píšeme v imperativu a ideálně v anglickém jazyce.
V GitHub Desktop po označení souborů, které chceme dávat do nové verze (commitu), napíšeme zprávu Add HelloWorld application a potvrdíme kliknutím na tlačítko Commit 1 file to main:

Git Push
Změnu máme vytvořenou. Nyní ji nahrajeme do vzdáleného repozitáře na GitHubu. K tomu slouží operace push. Push typicky provádíme po dokončení logické jednotky práce, před odchodem z domova či práce, nebo pokud chceme, aby naše změny byly viditelné pro ostatní.
-
V IDE push vyvoláme kliknutím na tlačítko Push, které se zobrazí po kliknutí na ... v nabídce Source Control:

-
V terminálu nám stačí napsat příkaz
git push:git push
Měli bychom vidět obdobný výstup, který znamená, že všechno proběhlo v pořádku:

-
V GitHub Desktop nám stačí kliknout na tlačítko Push origin:

Projekt je nahraný v našem repozitáři na GitHub. Můžeme se v
prohlížeči podívat na náš Dashboard, že projekt má nově složku
src/ a z ní se proklikáme až na soubor s novým kódem:

Pozor! Projekty vytvořené podle kurzů z ITnetwork pod licencí PRO nenahrávejte do veřejných repozitářů! Jsou chráněny autorskými právy a jejich šíření je nelegální. Mohl by si je pak zobrazit a stáhnout kdokoli na internetu, čím by po vás mohla být vyžadována náhrada škody.
Git Pull
Opačnou operací k push je pull. Ta stáhne ze vzdáleného serveru všechny změny od ostatních případných členů týmu do naší verze kódu.
-
Pull provedeme kliknutím na tlačítko Pull, které se zobrazí po kliknutí na ... v nabídce Source Control -> CHANGES.
Jelikož na vzdáleném serveru nemáme aktuálně žádné změny, operace po dokončení nezobrazí žádnou hlášku.
-
Příkazem
git pullstáhneme nové commity ze vzdáleného repozitáře:git pull
Jelikož na vzdáleném serveru nemáme aktuálně žádné změny, operace po dokončení zobrazí hlášku:
Already up to date.
-
V aplikaci GitHub Desktop přejdeme do menu Repository a zvolíme Pull:

Jelikož na vzdáleném serveru nemáme aktuálně žádné změny, žádné změny se v aplikaci neprovedou.
Nyní umíme založit vzdálený GitHub repozitář a napojit se na něj přes Visual Studio Code. Alternativně umíme pracovat s Gitem v příkazové řádce i v aplikaci GitHub Desktop. Naučili jsme se vytvářet commity a do repozitáře je nahrávat pomocí příkazu push, případně je stáhnout příkazem pull. Pokud vás Git zaujal, detailně se jím zabýváme v pokročilém kurzu Git.
V následujícím kvízu, Kvíz - Základní konstrukce JavaScript, si vyzkoušíme nabyté zkušenosti z kurzu.

