Synchronizácia repozitára

Táto stránka poskytuje základný návod, ako synchronizovať repozitár na virtuálke s vaším vzdialeným repozitárom umiestneným na službe GitHub.

Na prvom cvičení postupujte podľa sekcie Vytvorenie vzdialeného repozitára a prvé nahratie. Na ďalších cvičeniach potom podľa sekcie Stiahnutie repozitára na cvičení.

V prípade, že máte ťažkosti s nejakým príkazom, alebo chcete zistiť, čo robí, preštudujte si jeho manuálovú stránku: man git. Manuálovú stránku má tiež každý príkaz gitu, napr. man git commit.

Ak si chcete naštudovať úvod pre prácu s gitom, pozrite si manuálové stránky man gittutorial (úvodný tutoriál) a man giteveryday (základné príkazy).

Vytvorenie vzdialeného repozitára a prvé nahratie

  1. Vytvorte nový repozitár na službe GitHub. Môžete ho ľubovoľne pomenovať. Nevypĺňajte sekciu o inicializácii repozitára (Add a README file, Add .gitignore, Choose a license).
  2. Vo virtuálke s repozitárom xv6 zadajte príkazy:

    kde nahradíte reťazec Meno Priezvisko svojím menom a namiesto meno@domena.tld uvediete svoju e-mailovú adresu.

  3. Prejdite do priečinka ~/xv6-labs-2023 a zadajte príkaz git remote add github git@github.com:<meno>/<nazov>.git, kde <meno> je vaše meno na GitHube a <nazov> je názov vášho repozitára (ostré zátvorky tam nezadávajte).

    Týmto ste do lokálneho repozitára pridali odkaz na vzdialený repozitár (remote) s názvom github.

  4. Teraz je potrebné vytvoriť nový SSH kľúč. Postupujeme podľa oficiálneho návodu. Najprv vygenerujte nový kľúč príkazom ssh-keygen -t ed25519 -C "meno@domena.tld", kde meno@domena.tld je vaša e-mailová adresa. Prvú výzvu na umiestnenie kľúča môžete potvrdiť klávesou Enter bez zadania vstupu (použije sa predvolená hodnota). Heslovú frázu (passphrase) môžete zadať, ak chcete kľúč chrániť touto frázou.
  5. Pridajte vytvorený kľúč do autentifikačného agenta pomocou príkazu ssh-add ~/.ssh/id_ed25519.
  6. Verejný kľúč nahrajte na svoj GitHub účet. Vypíšte ho príkazom cat ~/.ssh/id_ed25519.pub. Na GitHube otvorte nastavenia SSH a GPG kľúčov a zvoľte Nový SSH kľúč. Dajte mu vhodný názov a do políčka Key prekopírujte celý vypísaný riadok (začína reťazcom ssh-ed25519 a končí vaším e-mailom).
  7. Svoj privátny kľúč ~/.ssh/id_ed25519 si uschovajte na online úložisku. Na ďalšom cvičení ho nahráte do virtuálky a rýchlejšie si stiahnute váš repozitár.
  8. Po vytvorení vzdialeného repozitára (teda iba teraz) musíte nahrať lokálny repozitár na vzdialený repozitár (operácia push). Urobíte to príkazom git push -u github (git sa ešte opýta na overenie kľúča servera github.com, ktoré potvrdíte zadaním yes a stlačením Enter). Na ďalších cvičeniach už budete začínať operáciou pull, kedy si stiahnete zmeny zo vzdialeného repozitára do lokálneho vo virtuálke.

Po dokončení práce na cvičení (alebo doma) by ste si mali túto prácu nahrať na váš vzdialený repozitár. Na to je potrebné vytvoriť commit a vykonať operáciu push. Postupujte podľa návodu v sekcii Commit a push.

Obraz disku na virtuálke je nemeniteľný a po vypnutí virtuálky sa automaticky resetuje. Ak si prácu nenahráte na vzdialený repozitár, prídete o svoje zmeny!

Stiahnutie repozitára na cvičení

  1. Na virtuálke s repozitárom xv6 zadajte príkazy:

    kde nahradíte reťazec Meno Priezvisko svojím menom a namiesto meno@domena.tld uvediete svoju e-mailovú adresu.

  2. Prejdite do priečinka xv6-labs-2023 a zadajte príkaz git remote add github git@github.com:<meno>/<nazov>.git, kde <meno> je vaše meno na GitHube a <nazov> je názov vášho repozitára (ostré zátvorky tam nezadávajte).

    Týmto ste do lokálneho repozitára pridali odkaz na vzdialený repozitár (remote) s názvom github.

  3. Z online úložiska si stiahnite svoj privátny kľúč a umiestnite ho na cestu ~/.ssh/id_ed25519.
  4. Pridajte stiahnutý kľúč do autentifikačného agenta pomocou príkazu ssh-add ~/.ssh/id_ed25519. Predtým musíte pravdepodobne nastaviť prístup ku kľúču len pre seba (chmod u=rw,go= ~/.ssh/id_ed25519), ináč autentifikačný agent nedovolí nahrať kľúč, ktorý je prístupný aj pre iných používateľov.
  5. Stiahnite svoj vzdialený repozitár príkazom git pull github.
  6. Pre aktualizáciu repozitára so serverom MIT ďalej postupujte podľa inštrukcií cvičenia.

Bežná práca s gitom

Táto sekcia popisuje bežné úkony, ktoré budete s repozitárom vykonávať.

Commit a push

Commity by mali predstavovať nejakú zmysluplnú a ucelenú zmenu kódu. Môže sa jednať o pridanie novej funkcionality, opravu chyby, pridanie dokumentácie alebo iné. Jedna úloha na cvičení obvykle predstavuje takúto ucelenú funkcionalitu. Po dokončení tejto úlohy by ste teda mali úpravy commitnúť do repozitára. Najprv určíte, ktoré súbory budú súčasťou ďalšieho commitu a pridáte ich do indexu:

Týmto ste do indexu pridali súbory user/sleep.c a Makefile. Potom commit potvrdíte príkazom:

Ak nepoužijete prepínač -m, otvorí sa editor1 a v ňom môžete pohodlnejšie napísať dlhšiu správu. Pre štruktúru správ postupujte podľa špecifikácie Conventional Commits 1.0.0.

Nový commit sa zatiaľ nachádza iba vo vašom lokálnom repozitári. Aby ste ho umiestnili na váš vzdialený repozitár, je potrebné zavolať git push github. Týmto príkazom sa zmeny v aktuálnej vetve nahrajú na váš vzdialený repozitár na GitHube.

Prepnutie na novú vetvu zo vzdialeného repozitára

Pri prepínaní vetvy príkazom git switch <vetva> git automaticky vytvorí lokálnu vetvu a prepojí ju so vzdialenou vetvou podľa jej názvu. Táto vzdialená vetva sa označuje ako upstream lokálnej vetvy. Problém nastane, ak existujú dve vetvy s rovnakým názvom na rôznych vzdialených repozitároch. Taká situácia môže nastať, ak vo svojom vzdialenom repozitári na GitHube už máte vetvu, ktorá zároveň existuje na repozitári MIT a lokálny repozitár o oboch vzdialených vetvách vie. V takomto prípade novú vetvu vytvoríte (podľa vetvy na GitHube) a prepnete sa na ňu príkazom:

Stiahnutie repozitára na vlastný PC

Postup v tejto sekcii ráta s tým, že už máte vytvorený vlastný vzdialený repozitár podľa návodu v sekcii Vytvorenie vzdialeného repozitára a prvé nahratie.

  1. Ak ešte nemáte nakonfigurovaný git, na vašom PC zadajte príkazy:

    kde namiesto Meno Priezvisko uvediete svoje meno a namiesto meno@domena.tld uvediete svoju e-mailovú adresu.

  2. Ak nerobíte na nami poskytnutej virtuálke, musíte si naklonovať xv6 zo serverov MIT. V domovskom (alebo vami vybranom) priečinku zadajte príkazy:

  3. Prejdite do priečinka xv6-labs-2023 a zadajte príkaz git remote add github git@github.com:<meno>/<nazov>.git, kde <meno> je vaše meno na GitHube a <nazov> je názov vášho repozitára.

    Týmto ste do lokálneho repozitára pridali odkaz na vzdialený repozitár (remote) s názvom github.

  4. Teraz je potrebné vytvoriť nový SSH kľúč. Postupujeme podľa oficiálneho návodu. Najprv vygenerujte nový kľúč príkazom ssh-keygen -t ed25519 -C "meno@domena.tld", kde meno@domena.tld je vaša e-mailová adresa. Prvú výzvu na umiestnenie kľúča môžete potvrdiť klávesou Enter bez zadania vstupu (použije sa predvolená hodnota). Heslovú frázu (passphrase) môžete zadať, ak chcete kľúč chrániť touto frázou.
  5. Pridajte vytvorený kľúč do autentifikačného agenta pomocou príkazu ssh-add ~/.ssh/id_ed25519.
  6. Verejný kľúč nahrajte na svoj GitHub účet. Vypíšte ho príkazom cat ~/.ssh/id_ed25519.pub. Na GitHube otvorte nastavenia SSH a GPG kľúčov a zvoľte Nový SSH kľúč. Dajte mu vhodný názov a do políčka Key prekopírujte celý vypísaný riadok (začína reťazcom ssh-ed25519 a končí vaším e-mailom).
  7. Stiahnite svoj vzdialený repozitár príkazom git pull github.
  8. Pre aktualizáciu repozitára so serverom MIT ďalej postupujte podľa inštrukcií cvičenia.

Poznámky:

1 štandardne nano, ale viete si ho zmeniť na iný pomocou príkazu git config --global core.editor <editor>