Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

12. diel - Git - Vzdialený repozitár - Práca s repozitárom

V predchádzajúcej lekcii, Git - Vzdialený repozitár - Tvorba a nastavenie repozitára, sme si vytvorili vzdialený repozitár a ukázali si jeho dôležité nastavenia vrátane vytvorenia issue, odkazu a prístupu pre užívateľov.

V dnešnom tutoriáli Git budeme pokračovať v práci so vzdialeným repozitárom. Ukážeme si, ako do neho nahrať súbory, ako z neho stiahnuť aktualizácie a ako uzavrieť jeho issue.

Nahranie súborov na vzdialený repozitár

V lekcii Vzdialený repozitár - Tvorba a nastavenie repozitára, sme si vytvorili odkaz z nášho lokálneho repozitára na repozitár vzdialený. Teraz tento odkaz využijeme na nahranie a stiahnutie aktualizácií zo vzdialeného repozitára do nášho lokálneho repozitára.

Súbory môžeme do vzdialeného repozitára zaslať pomocou verzovacieho nástroja Git. Je tiež možné nahrať súbory do vzdialeného repozitára priamo na platforme GitHub. Skúsme si oba spôsoby, aby sme následne videli problém pri sťahovaní aktualizácií zo vzdialeného repozitára.

Zaslanie súborov cez Git

V Gite slúži na nahranie súborov do vzdialeného repozitára príkaz git push. Príkaz pošle aktuálnu vetvu na server. Ak na serveri vetva so zadaným menom existuje, tak ju aktualizuje, inak ju vytvorí. Pokiaľ chceme poslať vetvu, ktorá má na serveri iné meno, použijeme príkaz vo formáte:

git push [source] [local branch name]:[branch name on the remote server]

Ak by sme použili príkaz git push bez parametrov, Git by automaticky poslal zmeny na zdroj origin.

Presuňme sa do nášho lokálneho repozitára. Nahráme náš lokálny repozitár na vzdialený server príkazom git push origin main:

MINGW64:/c/mygit
IctDemy@DESKTOP-ADEVTG4 MINGW64 /c/mygit (main)
$ git push origin main

Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 8 threads
Compressing objects: 100% (5/5), done.
Writing objects: 100% (7/7), 698 bytes | 232.00 KiB/s, done.
Total 7 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1), done.
To https://github.com/testUser/mygit.git
 * [new branch]      main -> main

IctDemy@DESKTOP-ADEVTG4 MINGW64 /c/mygit(main)
$

Po úspešnom nahraní sa vrátime do repozitára na platforme GitHub a aktualizujeme stránku. Náš repozitár sa aktualizoval podľa posledného uskutočneného commitu z lokálneho repozitára:

Aktualizovaný repositár - Git

Na obrázku vidíme v hlavičke posledný uskutočnený commit. Pri každom súbore vidíme, kedy bol vytvorený a názov commitu, ktorým bol ovplyvnený. V pravej lište vidíme sekciu Languages, do ktorej GitHub zaznamená použité programovacie jazyky a šablóny, ktoré rozoznal.

Nahranie súborov na platforme GitHub

Na vzdialenom repozitári máme možnosť nahrať súbory, alebo ich priamo vytvoriť. Skúsime si to vytvorením súboru README.md.

V hlavičke repozitára klikneme na Add file a v otvorenej ponuke vyberieme Create new file:

Menu pre nahranie/vytvorenie súboru - Git

Otvorí sa nám tento editor súboru:

Editor súboru - Git

Súbor pomenujeme README.md a do popisu súboru vložíme nasledujúci text:

# Test repository

This repository is for testing purposes only

Editor súboru teraz vyzerá takto:

Vytvorenie súboru README.md - Git

Súbor vytvoríme kliknutím na Commit changes...:

Vytvorenie súboru README.md - Git

Budeme vyzvaní na vytvorenie commitu. Do poľa Commit message vložíme názov commitu Create README.md a do Extended description potom Creating README.md:

Vytvorenie commitu - Git

Kliknutím na Commit changes commit vytvoríme. Repozitár sa aktualizuje a v hlavičke sa zobrazí commit s názvom Create README.md. Novo vytvorený súbor README.md je pridaný do repozitára:

Aktualizovaný repozitár po vytvorení README.md - Git

GitHub automaticky použije súbor README.md ako stručnú dokumentáciu.

Stiahnutie aktualizácií zo vzdialeného repozitára

Teraz si predvedieme, čo sa stane, keď sa pokúsime nahrať zmeny z nášho lokálneho repozitára na ten vzdialený, ktorý má už iné zmeny.

Najskôr náš lokálny repozitár upravíme. Spustíme nižšie uvedené príkazy, ktorými upravíme súbor test_file.txt v našom lokálnom repozitári. Potom vytvoríme commit a pokúsime sa nahrať zmeny na náš vzdialený repozitár príkazom git push origin main:

MINGW64:/c/mygit
IctDemy@DESKTOP-ADEVTG4 MINGW64 /c/mygit (main)
$ echo "Text added to test file" >> test_file.txt
IctDemy@DESKTOP-ADEVTG4 MINGW64 /c/mygit (main)
$ git add .
IctDemy@DESKTOP-ADEVTG4 MINGW64 /c/mygit (main)
$ git commit -m "Adding text to the test file"
[main 8307443] Adding text to the test file
 1 file changed, 1 insertion(+)
 create mode 100644 test_file.txt

$ git push origin main
To https://github.com/testUser/mygit.git
 ! [rejected]        main -> main (fetch first)
error: failed to push some refs to 'https://github.com/testUser/mygit.git'
hint: Updates were rejected because the remote contains work that you do not
hint: have locally. This is usually caused by another repository pushing to
hint: the same ref. If you want to integrate the remote changes, use
hint: 'git pull' before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

IctDemy@DESKTOP-ADEVTG4 MINGW64 /c/mygit (main)
$

Vidíme, že sa nám vypísalo chybové hlásenie. Táto chybová správa popisuje neúspešný pokus o aktualizáciu vzdialeného repozitára, pretože obsahuje zmeny, ktoré v našom lokálnom repozitári nie sú dostupné. Najprv si teda musíme tieto zmeny stiahnuť do nášho lokálneho repozitára pomocou príkazu git fetch alebo git pull.

Príkaz git fetch

Príkaz slúži na sťahovanie nových dát zo vzdialeného úložiska bez toho, aby ich integroval do našich pracovných súborov. Umožňuje nám získať informácie o zmenách, nových vetvách, či commit správach bez toho, aby akokoľvek narušil našu pracovnú kópiu.

Formát použitia príkazu git fetch je nasledujúci:

git fetch [source-name] [branch]

Na stiahnutie všetkých registrovaných vzdialených repozitárov a ich vetiev by sme použili príkaz git fetch vo formáte:

git fetch --all

Po stiahnutí aktualizácií príkazom git fetch by sme sa prepli na stiahnutú vetvu a následne vetvy zlúčili príkazom git merge.

Príkaz git pull

Na rozdiel od príkazu git fetch, príkaz git pull nielen stiahne obsah zo vzdialeného úložiska, ale taktiež aktualizuje miestne úložisko. Príkaz git pull je v skutočnosti kombináciou príkazov git fetch a git merge. V prvej fáze operácie príkaz git pull vykoná príkaz git fetch vymedzený na miestnu vetvu, na ktorú smeruje HEAD. Akonáhle je obsah stiahnutý, príkaz git pull vstúpi do pracovného postupu zlúčenia. Vytvorí nový commit zlúčenia a HEAD aktualizuje tak, aby naň ukazoval.

Teraz si príkaz git pull vyskúšame na aktualizáciu nášho miestneho repozitára, v ktorom spustíme príkaz git pull origin main. Získame popis procesu zlúčenia:

MINGW64:/c/mygit
IctDemy@DESKTOP-ADEVTG4 MINGW64 /c/mygit (main)
$ git pull origin main
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 833 bytes | 39.00 KiB/s, done.
From https://github.com/testUser/mygit
 * branch            main       -> FETCH_HEAD
   7c1cc01..9a48c6a  main       -> origin/main
Merge made by the 'ort' strategy.
 README.md | 3 +++
 1 file changed, 3 insertions(+)
 create mode 100644 README.md

IctDemy@DESKTOP-ADEVTG4 MINGW64 /c/mygit (main)
$

Teraz je náš lokálny repozitár aktualizovaný. Spustíme príkaz git push a na vzdialený repozitár nahráme posledný commit:

MINGW64:/c/mygit
IctDemy@DESKTOP-ADEVTG4 MINGW64 /c/mygit (main)
$ git push origin main

Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 8 threads
Compressing objects: 100% (5/5), done.
Writing objects: 100% (7/7), 698 bytes | 232.00 KiB/s, done.
Total 7 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1), done.
To https://github.com/testUser/mygit.git
 * [new branch]      main -> main

IctDemy@DESKTOP-ADEVTG4 MINGW64 /c/mygit (main)
$

Naše lokálne zmeny sú úspešne nahrané na vzdialenom repozitári 😀

Uzavretie issue pri vzdialenom repozitári

V lekcii Vzdialený repozitár - Tvorba a nastavenie repozitára sme si ukázali tvorbu issue. Teraz si ukážeme uzavretie issue.

Jednotlivé issue môžeme uzavrieť dvoma spôsobmi:

  • Close as completed (Zavrieť ako dokončené) - issue bude označené ako vyriešené.
  • Close as not planned (Zavrieť ako nedokončené) - issue bude označené ako nevyriešené.

My si ukážeme, ako uzavrieť naše Test issue ako vyriešené.

Uzavretie issue ako vyriešené

V hornom menu repozitára klikneme na Issues:

Tlačidlo na otvorenie Issues - Git

Otvorí sa nám stránka so všetkými issues vytvorenými pre náš repozitár:

Zoznam všetkých Issue - Git

Kliknutím na Test issue si ho otvoríme:

Detail nového Issue - Git

Pred uzavretím issue je dôležité napísať komentár popisujúci spôsob, akým bola situácia vyriešená. Problém, ktorý je zastúpený v issue s id #1 indikuje, že je repozitár prázdny. Napíšeme teda správu o nahraní súborov do repozitára. Do textového poľa napíšeme The files to the repository have been uploaded:

Napísanie komentára do Issue - Git

Issue uzavrieme klikom na šípku vedľa tlačidla Close with comment:

Menu pre výber typu zrušenia. - Git

Otvorí sa nám ponuka ponúkajúca dve vyššie popísané voľby uzavretia issue. Kliknite na Close as completed. Issue sa uzavrie a stránka sa aktualizuje. Po tejto akcii vidíme, že značka Open sa zmenila na Closed, čo označuje uzavretie issue. Súčasne je pridaný náš komentár a identifikačná značka signalizujúca uzavretie issue:

Issue po uzavretí - Git

Týmto sme úspešne vyriešili issue nášho repozitára.

Prehľad základných príkazov

Nakoniec si ešte znázorníme účinnosť prebraných základných Git príkazov na jednotlivé pracovné priestory:

Štruktúra Git prikazov - Git

V nasledujúcom kvíze, Kvíz - Kolízie medzi vetvami a vzdialený repozitár v Gite, si vyskúšame nadobudnuté skúsenosti z predchádzajúcich lekcií.


 

Predchádzajúci článok
Git - Vzdialený repozitár - Tvorba a nastavenie repozitára
Všetky články v sekcii
Git
Preskočiť článok
(neodporúčame)
Kvíz - Kolízie medzi vetvami a vzdialený repozitár v Gite
Článok pre vás napísal Filip Studený
Avatar
Užívateľské hodnotenie:
223 hlasov
.
Aktivity