Nové výhodné předplatné namísto kreditů je tu! Více informací. Upravili jsme také naše provozní podmínky.
NOVINKA: Staň se datovým analytikem a získej jistotu práce, lepší plat a nové kariérní možnosti. Více informací:

Lekce 23 - Verzovací nástroj Git a Visual Studio Code

V minulé lekci, Nejčastější chyby PHP začátečníků, děláš je také?, jsme si ukázali nejčastější chyby začátečníků v PHP, např. ohledně vyhodnocování bool výrazů a DRY.

Základní konstrukce jazyka PHP máme za sebou. Než kurz zcela opustíme, naučíme se v tomto tutoriálu 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, 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 má Git při 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). Git nám tak pomáhá zabránit nechtěnému přepisování změn ostatních členů týmu. Pokud změny nelze sloučit automaticky, musíme vzniklé konflikty vyřešit ručně. Proto je základní znalost práce s Gitem očekávána na většině pracovních pozic ve firmách s vývojovým týmem. 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ží připravené změny do historie lokálního repozitáře.
  • Push – Nahraje naše lokální commity na vzdálený server, odkud si je mohou ostatní programátoři stáhnout. Necommitované změny neodesílá.
  • Pull – Stáhne nové commity ze vzdáleného serveru a začlení je do naší aktuální větve.

Příkazů je samozřejmě více, těm je pak věnován celý kurz. Pro naše potřeby 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 nové commity 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 nové commity ze vzdáleného repozitáře a začleníme je do své aktuální větve (např. změny provedené ostatními).

Vytvoření vzdáleného repozitáře na GitHubu

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.

Postup registrace vypadá takto:

Základní konstrukce jazyka PHP

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:

Základní konstrukce jazyka PHP

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.
  • 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:

Základní konstrukce jazyka PHP

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

Základní konstrukce jazyka PHP

Tímto máme vzdálený GitHub repozitář vytvořený a můžeme přejít k 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:

Instalace Gitu na Windows - Základní konstrukce jazyka PHP

Následně klikneme na Click here to download:

Stažení Gitu pro Windows - Základní konstrukce jazyka PHP

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 jsme měli Visual Studio Code spuštěný během instalace Gitu, restartujeme jej. Otevřeme terminál kliknutím na záložku Terminal v horním menu a výběrem možnosti New Terminal. Dostupnost Gitu ověříme příkazem:

Windows PowerShell
git --version

Příkaz vypíše verzi nainstalovaného Gitu.

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. Do terminálu 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ůžeme postupovat podle alternativního návodu, na který se přepneme pomocí tlačítek níže.

  • 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:

    Klonování repozitáře ve VS Code - Základní konstrukce jazyka PHP

    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:

    Nabídka Clone from GitHub - Základní konstrukce jazyka PHP

    Pokud v nabídce možnost Clone from GitHub nevidíme, otevřeme paletu příkazů pomocí Ctrl + Shift + P, vybereme Git: Clone a vložíme URL našeho repozitáře na GitHubu. Pro základní klonování není nutné instalovat další rozšíření.

    Otevře se prohlížeč, kde po případném přihlášení zvolíme GitHub účet, se kterým se chceme propojit:

    Potvrzení účtu k propojení s VS Code - Základní konstrukce jazyka PHP

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

    Potvrzení požadavku na integraci VS Code - Základní konstrukce jazyka PHP

    Pokud jsme zvolili Clone from GitHub, 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:

    Nabídka dostupných repozitářů - Základní konstrukce jazyka PHP

    Poté zvolíme cestu, kam se má repozitář naklonovat. Jako cílovou složku zvolíme C:\xampp\htdocs a chvíli počkáme. Repozitář se naklonuje do nové podsložky git-tutorial:

    Základní konstrukce jazyka PHP
    Základní konstrukce jazyka PHP

    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:

    Základní konstrukce jazyka PHP

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

    Základní konstrukce jazyka PHP
  • V praxi se velmi často k práci s Gitem 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ář C:\xampp\htdocs, do kterého budeme chtít naklonovat náš git-tutorial projekt. Na adresář klikneme pravým tlačítkem myši a v menu zvolíme Zobrazit další možnosti a Open Git Bash here:

    Základní konstrukce jazyka PHP

    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-tutorial, kde D3NY nahradí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í ke GitHubu. Zvolíme možnost Sign in with your browser:

    Základní konstrukce jazyka PHP

    V terminálu se nám zatím vypíše informace o tom, že autentizaci 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:

    Základní konstrukce jazyka PHP

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

    Základní konstrukce jazyka PHP

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

    Základní konstrukce jazyka PHP

    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.

    Přejdeme do VS Code, v horním menu zvolíme File > Open Folder... a najdeme náš adresář git-tutorial, který následně otevřeme pomocí tlačítka Select Folder:

    Základní konstrukce jazyka PHP
  • Spustíme program GitHub Desktop. Na stránce Welcome to GitHub Desktop zvolíme možnost Sign in GitHub.com:
    Základní konstrukce jazyka PHP

    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:

    Základní konstrukce jazyka PHP

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

    Základní konstrukce jazyka PHP

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

    Základní konstrukce jazyka PHP

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

    Základní konstrukce jazyka PHP

    Vyhledáme náš vzdálený repozitář git-tutorial. V poli Local Path nastavíme výslednou cestu C:\xampp\htdocs\git-tutorial a potvrdíme kliknutím na Clone:

    Základní konstrukce jazyka PHP

    Přejdeme do VS Code, v horním menu zvolíme File > Open Folder... a najdeme náš adresář git-tutorial, který následně otevřeme pomocí tlačítka Select Folder:

    Základní konstrukce jazyka PHP

Git Add

V horním menu VS Code zvolíme File > New File... a nový soubor pojmenujeme index.php. Do souboru vložte kód, který jistě poznáváte:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        echo('Hello world');
        ?>
    </body>
</html>

Změny uložíme pomocí Ctrl + S. Výsledek by mohl vypadat následovně. Můžeme si všimnout, že ve stromové struktuře má soubor index.php u sebe písmeno U jako Untracked. To znamená, že Git tento soubor zatím nesleduje (není ve verzování):

Základní konstrukce jazyka PHP
  • 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:

    Základní konstrukce jazyka PHP
  • 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 status si můžeme ověřit, které soubory a adresáře (obarvené červenou barvou) můžeme přidávat (git add) do další verze:

    Základní konstrukce jazyka PHP

    Vidíme zde soubor index.php. Ten pomocí příkazu git add přidáme do takzvané staging fáze, tedy připravené na vytvoření nové verze (commit):

    git add index.php

    Příkazem git status si můžeme ověřit, které soubory (obarvené zelenou barvou) budou nahrány do příští verze (commit):

    Základní konstrukce jazyka PHP

    Poté můžeme konečně přistoupit k vytvoření nové verze (commitu). Samotný git commit musí 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ě:

    Základní konstrukce jazyka PHP
  • 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 modrou fajfkou označený soubor index.php. Tím říkáme, že tento soubor chceme zahrnout do dalšího commitu:

    Základní konstrukce jazyka PHP

Nyní je na čase vytvořit náš první commit.

Git Commit

  • V 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:

    Provedení commitu - Základní konstrukce jazyka PHP

    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.

    V tomto postupu používáme Commit (Amend) pouze u posledního commitu, který jsme ještě neodeslali na GitHub. Amend původní commit nahradí novým s jiným identifikátorem. U již odeslaného commitu by následné nahrání vyžadovalo přepsání vzdálené historie a mohlo zkomplikovat práci ostatním.

  • Můžeme přistoupit k vytvoření nové verze (commitu). Samotný git commit musí 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ě:

    Základní konstrukce jazyka PHP
  • Můžeme přistoupit ke commitu. 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 poli Summary napíšeme zprávu Add HelloWorld application a potvrdíme kliknutím na tlačítko pro vytvoření commitu do větve main. Do commitu zahrneme pouze soubor index.php:

    Základní konstrukce jazyka PHP

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:

    Push projektu - Základní konstrukce jazyka PHP
  • 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:

    Základní konstrukce jazyka PHP
  • V GitHub Desktop nám stačí kliknout na tlačítko Push origin:

    Základní konstrukce jazyka PHP

Projekt je nahraný v našem repozitáři na GitHubu. Můžeme se v prohlížeči podívat na stránku našeho repozitáře a ověřit, že obsahuje soubor index.php s novým kódem:

Základní konstrukce jazyka PHP

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 nové commity ze vzdáleného serveru a začlení je do naší aktuální větve.

  • Pull provedeme kliknutím na ... v nabídce Source Control a výběrem položky Pull.
    Základní konstrukce jazyka PHP

    Jelikož na vzdáleném serveru nemáme aktuálně žádné nové commity, obsah projektu se po dokončení operace nezmění.

  • Příkazem git pull stáhneme nové commity ze vzdáleného repozitáře a začleníme je do aktuální větve:
    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:
    Základní konstrukce jazyka PHP
    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ý repozitář na GitHubu 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 a začlenit příkazem pull. Pokud vás Git zaujal, detailně se jím zabýváme v pokročilém kurzu Git.

Shrnutí lekce

Git slouží ke sledování změn v projektu a umožňuje vrátit se ke starším verzím kódu. Projekt může být uložený lokálně v počítači i vzdáleně, například na GitHubu. Repozitář z GitHubu si stáhneme příkazem clone, upravené soubory připravíme pomocí add a změny uložíme do historie příkazem commit. Příkaz push nahraje commity do vzdáleného repozitáře, zatímco pull stáhne nové commity a začlení je do aktuální větve. Git díky tomu usnadňuje týmovou práci, protože uchovává historii změn, ukazuje, kdo co upravil, a pomáhá sloučit práci více lidí.

V následujícím kvízu, Kvíz - Základní konstrukce PHP, si vyzkoušíme nabyté zkušenosti z kurzu.


 

Předchozí článek
Nejčastější chyby PHP začátečníků, děláš je také?
Všechny články v sekci
Základní konstrukce jazyka PHP
Přeskočit článek
(nedoporučujeme)
Kvíz - Základní konstrukce PHP
Článek pro vás napsal Neaktivní uživatel
Avatar
Uživatelské hodnocení:
98 hlasů
Tento uživatelský účet již není aktivní na základě žádosti jeho majitele.
Aktivity