NOVINKA: Kurz kybernetické bezpečnosti s akreditací MŠMT, nyní již od 0 Kč. Staň se žádaným profesionálem. Zjisti více:
NOVINKA: Staň se datovým analytikem a získej jistotu práce, lepší plat a nové kariérní možnosti. Více informací:

Lekce 21 - Verzovací nástroj Git a IntelliJ IDEA

V předešlém cvičení, Řešené úlohy k 18.-20. lekci Javy, jsme si procvičili nabyté zkušenosti z předchozích lekcí.

Základní konstrukce jazyka Java 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.

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 určitě pomůže organizovat kód ve vlastních projektech. Největší přínos Gitu je 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). 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 přes Git, 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 na vzdálený repozitář. 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í IntelliJ IDEA, 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č.
  • AddPřidá změny k budoucímu uložení.
  • CommitUloží změny tak, že vytvoří záznam o tom, co se od posledního commitu (uložení) změnilo.
  • PushNahraje všechny naše lokální změny (commity) na vzdálený server, odkud si je mohou ostatní programátoři stáhnout.
  • PullStá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. Nám to však takto stačí.

Git repozitář

Git repozitář si představme 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 GitHub repozitáře

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:

Zavináč - Základní konstrukce jazyka Java

Postup registrace vypadá takto:

Základní konstrukce jazyka Java

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 Java

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 nameNá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/PrivateViditelnost 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 výhradně zdrojový kód. Tento soubor se používá k vyloučení ostatních souborů nebo složek z verzovacího systému. Jedná se například o dočasnou složku .idea/, spustitelné .jar soubory a podobně.
  • LicenseLicence 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 a .gitignore template: Java:

Základní konstrukce jazyka Java

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 Java

Tímto máme vzdálený GitHub repozitář vytvořený a můžeme přejít k práci s Gitem v IntelliJ IDEA 😊

Instalace Git

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 Java

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

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

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.

Ukážeme si postupné kroky práce s Git 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 je možné pracovat buď přímo pomocí integrace v IDE nebo pomocí příkazové řádky nebo 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 IntelliJ IDEA spuštěný během instalace Git, restartujeme jej. Otevřeme libovolný projekt nebo vytvoříme nový. Nejdříve potřebujeme nakonfigurovat Git v IntelliJ IDEA. Začneme tím, že vybereme cestu k nainstalovanému Git klientu. V menu zvolíme File -> Settings -> Version Control -> Git. V okně v části "Path to Git executable:" bychom měli mít napsáno Auto-detected a cestu. Případně cestu ke Gitu nastavíme ručně, např. C:\Program Files\Git\cmd\git.exe.

    Ověřit si to můžeme kliknutím na tlačítko Test. Pokud se objeví "Git version is 2.x.x", vše je správně nastavené:

    Nastavení Git v IntelliJ IDEA - Základní konstrukce jazyka Java

    Následně můžeme přistoupit ke klonování našeho repozitáře z GitHub. V menu vybereme VCS -> Get from Version Control... (pokud bychom neměli otevřený projekt, v úvodní nabídce můžeme přímo kliknout na Clone Repository):

    Základní konstrukce jazyka Java

    Klonování repozitáře

    V dalším kroku se potřebujeme do GitHubu přihlásit z IntelliJ IDEA a autorizovat propojení těchto dvou nástrojů. Přepneme se do menu GitHub a klikneme na Log In via GitHub…:

    Logování do Gitu v IntelliJ IDEA - Základní konstrukce jazyka Java

    Otevře se prohlížeč, kde potvrdíme tlačítkem a přihlásíme se do svého GitHub účtu:

    Potvrzení požadavku na integraci GitHub - Základní konstrukce jazyka Java

    Po přihlášení autorizujeme integraci do IDE IntelliJ IDEA:

    Potvrzení požadavku na integraci JetBrains - Základní konstrukce jazyka Java

    Pokud došlo během autorizace k problému, prohlížeč zavřete, vystornujte v IntelliJ IDEA proces logování a proveďte akce znovu tlačítkem Log In via GitHub….

    Po úspěšném propojení účtů se zobrazí potvrzovací hláška:

    Úspěšné propojení účtů - Základní konstrukce jazyka Java

    Nyní v IntelliJ IDEA vidíme formulář s našimi vzdálenými GitHub repozitáři. Z nabídky vybereme repozitář git-tutorial, který jsme si v předchozím kroku založili, a klikneme na tlačítko Clone:

    Základní konstrukce jazyka Java

    Tímto se vzdálený repozitář naklonuje (zkopíruje) z GitHubu do počítače. Ihned poté se automaticky otevře rozhraní IntelliJ IDEA, které již dobře známe. V případě, že vám vyskočí výstražné okno varující před nebezpečím škodlivého kódu, zvolte možnost Trust Project potvrzující, že klonovanému projektu důvěřujete:

    Základní konstrukce jazyka Java
  • V praxi se velmi často k práci s Git používá terminál (příkazový řádek). Jeho výhoda 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 IntelliJ IDEA projekty, do kterého budeme chtít naklonovat náš git-tutorial projekt. Většinou je to složka C:\Users\vase_jmeno\IdeaProjects\. 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 Java

    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 IdeaProjects.

    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. Měla by 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í se ke GitHub. Zvolíme možnost Sign in with your browser:

    Základní konstrukce jazyka Java

    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:

    Základní konstrukce jazyka Java

    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 Java

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

    Základní konstrukce jazyka Java

    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.

    V IntelliJ IDEA 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 Trust Project potvrzující, že klonovanému projektu důvěřujete:

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

    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 Java

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

    Základní konstrukce jazyka Java

    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 Java

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

    Základní konstrukce jazyka Java

    Vyhledáme náš vzdálený repozitář git-tutorial a potvrdíme kliknutím na Clone:

    Základní konstrukce jazyka Java

    V IntelliJ IDEA 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 Trust Project potvrzující, že klonovanému projektu důvěřujete.

    Základní konstrukce jazyka Java

Git Add

V IntelliJ IDEA klikneme pravým tlačítkem myši na adresář git-tutorial/, dále v nabídce zvolíme New > Directory a nový adresář pojmenujeme src/:

Základní konstrukce jazyka Java

Na vytvořený adresář znovu klikneme pravým tlačítkem myši a v nabídce vybereme Mark Directory as > Sources Root:

Základní konstrukce jazyka Java

Poté klikneme pravým tlačítkem myši na adresář src/, zvolíme New > Java Class a třídu pojmenujeme HelloWorld. Můžeme si všimnout, že ve stromové struktuře svítí třída HelloWorld červeně. To znamená, že se zatím neverzuje.

  • Zároveň se nám zobrazilo dialogové okno Add File to Git, ve kterém se nás IDE dotazuje, zda chceme soubor přidat do Gitu a začít verzovat. Klikneme tedy na tlačítko Add:

    Základní konstrukce jazyka Java

    Pokud jsme dialogové okno zavřeli, ale název souboru je stále červený, klikneme na soubor pravým tlačítkem myši a v nabídce zvolíme Git a klikneme na Add.

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

    Vidíme zde adresáře src/ a .idea/. Vzhledem k tomu, že skrytý adresář .idea/ zálohovat (commitovat) nepotřebujeme, přidáme ho do takzvaného ignore souboru následujícím příkazem:

    echo .idea/ >> .gitignore

    Při ověření příkazem git status se už daný adresář .idea/ nevypíše. Git ho úplně ignoruje a nebude ho zahrnovat do dalších verzí: Základní konstrukce jazyka Java

    Teď už můžeme pomocí příkazu git add přidat složku src/ včetně souboru HelloWorld.java i modifikovaný soubor .gitignore do takzvané staging fáze, tedy připravené na vytvoření nové verze (commit):

    git add src/ .gitignore

    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 Java
  • V aplikaci se nám v levé části zobrazí soubory, které jsou buď nové, nebo v nich došlo k nějaké změně. Modrou fajfkou necháme označené jenom .gitignore a src\HelloWorld.java. Tím říkáme, že jenom tyto dva soubory chceme přidávat v dalším commitu:

    Základní konstrukce jazyka Java

    Abychom to nemuseli dělat pokaždé, přidáme adresář .idea/ do gitignore. Obsahuje totiž konfigurační soubory IntelliJ IDEA, které nechceme ukládat do nové verze (zálohovat). V GitHub Desktop vybereme v menu Repository -> Settings a v okně "Repository settings" zvolíme v menu Ignored files. Přesuneme se na konec souboru .gitignore a ručně připíšeme řádek .idea/. Potvrdíme tlačítkem Save:

    Základní konstrukce jazyka Java

V IntelliJ vlevo ve stromové struktuře nyní vidíme třídu zeleně, což znamená, že je do Gitu přidána a verzuje se. HelloWorld je zeleně - Základní konstrukce jazyka Java

Pojďme do třídy vložit následující kód, který poté nahrajeme na GitHub:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Ahoj světe!");
    }
}
Základní konstrukce jazyka Java

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

Git Commit

  • V levém postranním panelu klikneme na ikonu Základní konstrukce jazyka Java, čímž zobrazíme nový panel Commit.

    V nabídce Changes vybereme soubory, kterých se commit týká. V našem případě pouze soubor HelloWorld.java. Dále do textového pole Commit 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:

    Základní konstrukce jazyka Java

    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 nám rovněž zobrazí checkbox 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 pokud jsme zapomněli přidat nějaký soubor nebo chceme změnit commit zprávu.

    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.

  • Tím, že jsme náš soubor HelloWorld.java modifikovali, musíme ho znovu přidat do staging stavu příkazem:

    git add src/HelloWorld.java

    Nyní už 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 Java
  • 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 2 files to main:

    Základní konstrukce jazyka Java

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 záložku main v levé části horního panelu:

    Základní konstrukce jazyka Java

    V dalším okně push potvrdíme kliknutím na tlačítko Push:

    Základní konstrukce jazyka Java
  • 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 Java
  • V GitHub Desktop nám stačí kliknout na tlačítko Push origin:

    Základní konstrukce jazyka Java

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:

Základní konstrukce jazyka Java

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 do naší verze kódu.

  • V IntelliJ IDEA pull provedeme opět kliknutím na záložku main v levé části horního panelu. Poté rozklikneme položku Remote > main a zvolíme buď možnost Rebase (pokud chceme změny v projektu přepsat), nebo Merge (pokud chceme změny v projektu sloučit):

    Základní konstrukce jazyka Java

    Jelikož na vzdáleném serveru nemáme aktuálně žádné změny, operace po dokončení zobrazí hlášku All files are up-to-date.

  • Příkazem git pull stá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:

    Alread up to date.
  • V GitHub Desktop aplikaci přejdeme do menu Repository a zvolíme Pull:

    Základní konstrukce jazyka Java

    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 IntelliJ IDEA. Alternativně umíme pracovat s Git v příkazové řádce i 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 Javy, si vyzkoušíme nabyté zkušenosti z kurzu.


 

Předchozí článek
Řešené úlohy k 18.-20. lekci Javy
Všechny články v sekci
Základní konstrukce jazyka Java
Přeskočit článek
(nedoporučujeme)
Kvíz - Základní konstrukce Javy
Článek pro vás napsal Daniel Zábojník
Avatar
Uživatelské hodnocení:
658 hlasů
Aktivity