Git – práca s repozitármi

Tento príspevok je časťou série:

Cieľ

Chcem zosumarizovať poznatky o základnej práci so vzdialenými a lokálnymi repozitármi, ich vytváranie, pripájanie a klonovanie v systéme na správu verzii Git.

Príkazy

Riešenie

Vytvorenie vzdialeného úložiska vo webovom rozhraní

Poskytovateľ Bitbucket má túto možnosť na adrese .

  • z rozbaľovacieho menu vybrať jednu z možností Workspace
  • z rozbaľovacieho menu vybrať jednu z možností Project
  • vyplniť pole Repository name
  • nechať zaškrtnuté / odškrtnúť políčko Access level
  • pri Include a README? vybrať jednu z možností No / Yes
  • pri Deafult branch name dopísať predvolené meno vetvy
  • pri Include .gitignore vybrať jednu z možností

Stlačiť tlačidlo Create repository / Cancel

Poskytovateľ GitLab má túto možnosť na adrese

  • vyplniť pole Project name
  • vybrať z rozbaľovacieho menu Project URL
  • vyplniť pole Project slug
  • vybrať z rozbaľovacieho menu Project deployment target (optional)
  • vybrať jednu z možností Visibility levelPrivate / Public
  • nechať zaškrtnuté / odškrtnúť Initialize repository with a README
  • nechať odškrtnuté / zaškrtnúť Enable Static Aplication Security Testing (SAST)

Stlačiť tlačidlo Create project / Cancel

Poskytovateľ GitHub má túto možnosť na adrese

  • z rozbaľovacieho menu vybrať jednu z možností Owner
  • vyplniť pole Repository name
  • vyplniť pole Description (optional)
  • vybrať jednu z možností Public / Private
  • nechať odškrtnuté / zaškrtnúť Add a README file
  • vybrať z rozbaľovacieho menu .gitignore template
  • vybrať z rozbaľovacieho menu License

Stlačiť tlačidlo Create repository


Vytvorenie lokálneho úložiska

Na ľubovoľnom mieste v adresárovej štruktúre môžem vytvoriť lokálny repozitár.

git init názov_úložiska

V prípade, že daný adresár už existuje, prepnem sa do neho a tam inicializujem nové úložisko.

cd nové_úložisko
git init

Lokálne úložisko môžem vytvoriť aj klonovaním. Je to metóda vytvorenia lokálneho úložiska vytvorením vernej kópie vzdialeného úložiska priamo na mojom disku.

git clone git@bitbucket.org:uzivatel/repo.git cielovy_adresar

Klonovaním sa v miestnom úložisku vytvorí len hlavná vetva vzdialeného úložiska. V prípade, že vzdialený repozitár obsahuje aj ďalšie vetvy a aj tie chcem klonovať do lokálneho repozitára, musím jednotlivé vetvy stiahnuť osobitne.

O práci s vetvami podrobnejšie viď neskôr v časti [Vetvenie].

Klonovať úložisko môžem aj s ďalšími vnorenými repozitármi (submodules).

git clone git@bitbucket.org:uzivatel/repo.git cielovy_adresar
cd cielovy_adresar
git submodule init
git submodule update

V novších verziách Gitu je klonovanie s vnorenými repozitármi jednoduchšie.

  • verzie 1.9 a vyššie – --recursive
  • verzie 2.8 a vyššie – -j8 (až 8 modulov naraz)
  • verzie 2.13 a vyššie – --recurse-submodules
git clone --recurse-submodules -j8 git@bitbucket.org:uzivatel/repo.git adresar

Pripojenie lokálneho ku vzdialenému úložisku

Ak som vytvoril lokálne úložisko klonovaním tak pripojenie na vzdialené úložisko je už nastavené. Ak som však vytvoril lokálny repozitár pomocou git init potrebujem ho pripojiť ku vzdialenému repozitáru ručne.

git remote add origin git@gitlab.com:uzivatel/repo.git

Lokálne úložisko môžem pripojiť ku viacerým vzdialeným úložiskám.

git remote set-url origin --add git@github.com:uzivatel/repo.git

Po pripojení viacerých repozitárov git push odošle zaznamenané zmeny do všetkých takto nastavených vzdialených repozitárov, ale git fetch / merge / pull bude sťahovať zmeny len z pôvodného.

Môžem zobraziť všetky vzdialené pripojené repozitáre.

git remote -v

Odpoveď je zoznam plus informácia, ktoré úložiská budú použité na sťahovanie / odosielanie zmien.

origin  git@github.com:zwieratko/ssh-a-speed.git (fetch)
origin  git@github.com:zwieratko/ssh-a-speed.git (push)
origin  git@bitbucket.org:zwieratko/ssh-a-speed.git (push)
origin  git@gitlab.com:zwieratko/ssh-a-speed.git (push)

Zmena typu pripojenia úložiska

V prípade, že bol repozitár pripojený cez HTTPS (autorizácia heslom / tokenom) môžem zmeniť pripojenie na SSH (autorizácia OpenSSH kľúčom).

git remote set-url origin git@gitlab.com:uzivatel/repo.git

Respektíve naopak zo SSH na HTTPS.

git remote set-url origin https://gitlab.com/uzivatel/repo.git

Zmeniť typ pripojenia môžem aj pre vnorený repozitár (submodules).

git submodule set-url vnoreny/adresar git@github.com:uzivatel/repo.git

Zdroj

Tento príspevok je časťou série: