Git

Z bur.sk
Skočit na navigaci Skočit na vyhledávání


Git je nástroj na správu verzií programov a dokumentov (version control).

Miesta, kde sú uložené dokumenty:

upstream repository 
projektový server, čiže cudzí počítač
local repository 
kópia (vybraných častí) projektového servera na mojom počítači; možno už nie je aktuálna
workplace 
môj adresár, v ktorom pracujem
index 
zmeny pripravené na uloženie do local repository
stash 
veci dočasne odložené nabok

Príkazy

Namiesto príkazu "git checkout", ktorý robil veľa rôznych vecí, je lepšie používať špecializovanejšie príkazy "git switch" a "git restore".

Vytvorenie pracovného adresára

git clone https://example.com/example-user/example-project.git

V aktuálnom adresári vytvorí podadresár "example-project", do ktorého stiahne projekt zo servera.

Ak chcem vytvoriť nový projekt, existuje na to príkaz "git init", ale väčšinou je jednoduchšie vytvoriť nový projekt na danom serveri, a potom si ho stiahnuť.

git clone --config http.sslVerify=false https://example.com/example-user/example-project.git

Ak súrne potrebujem niečo nakonfigurovať na projekte, ktorý sa ešte len chystám stiahnuť (napríklad spôsob sťahovania), použijem parameter "--config". Po stiahnutí projektu sa toto nastavenie automaticky uloží do nastavení projektu.

Stiahnutie súborov z internetu

git fetch
git fetch --prune

Aktualizuje moju lokálnu kópiu servera, aby bola rovnaká ako projektový server.

Verzia s "--prune" vymaže z lokálnej kópie vetvy, ktoré na serveri už neexistujú (napríklad keď bol na serveri pripojený pull request). Aby sme to nemuseli stále písať, môžeme v konfigurácii nastaviť "fetch.prune" na "true", a potom už píšeme iba "git fetch":

git config --global fetch.prune true

Informácie

git log
git log --oneline
git log --all --oneline
git log --graph --oneline

Ukáže históriu úprav. Štandardne je každá úprava popísaná na pár riadkov; s parametrom "--oneline" je každá úprava v jednom riadku, takže je to čitateľnejšie a viac sa ich zmestí na obrazovku. Verzia s "--all" vypíše úpravy na všetkých vetvách, nielen na aktuálnej. Verzia s "--graph" vykreslí aj graf, ako sa jednotlivé vetvy rozdeľovali a spájali.

Prepínanie vetiev

git switch BRANCH
git switch --detach TAG

Potvrdenie úprav

git add .

Pripravíme všetky zmenené súbory na potvrdenie.

git commit -m "súhrn čo som zmenil"

Potvrdím zmenu všetkých pripravených súborov; stručný popis sa bude vypisovať v histórii zmien.

git commit --allow-empty -m "nič sa nezmenilo"

Niekedy potrebujem urobiť "potvrdenie zmien" aj keď sa v skutočnosti nezmenilo nič, napríklad ak je server nastavený tak, že sa po každej zmene niečo automaticky spustí a potrebujem to spustiť znovu. Príkaz "git commit" štandardne vypíše chybu, ak nie sú pripravené žiadne súbory, ale verzia s "--allow-empty" dovolí potvrdiť aj zmenu s 0 súbormi.

Zrušenie úprav

git restore

Zruší nepotvrdené úpravy a uvedenie projekt do pôvodného stavu.

git reset --soft HEAD~1

Zruší posledné potvrdenie (revertuje posledný príkaz "git commit", ale ponechá zmeny v súboroch, a ponechá tieto súbory označené ako pripravené na potvrdenie.

Konfigurácia

Nastavenie Gitu sú na troch miestach:

systémové 
týchto je lepšie sa nedotýkať, týkajú sa všetkých používateľov na danom počítači, sú niekde ako "C:\Program File\Git\etc\gitconfig"
globálne (užívateľské) 
moje nastavenia spoločné pre všetky projekty, sú niekde ako "C:\Users\Viliam\.gitconfig"
lokálne (projektové) 
nastavenia týkajúce sa iba jedného projektu, sú v adresári daného projektu v ".git/config"

Niekedy mám projekty z viacerých serverov, a chcem, aby nejaké nastavenie platilo pre všetky projekty z jedného servera, ale nie pre projekty z iných serverov. Jedna možnosť je pridať tieto nastavenia do daných projektov, napríklad tak, že si na stiahnutie projektov z daného servera napíšem skript, ktorý zároveň všetko nastaví. Druhá možnosť je zadať v konfiguračnom súbore, že nejaká sekcia platí iba pre nejaký server; napríklad namiesto (alebo okrem) skupiny ako je "[http]" použijem (aj) skupinu "http "https://example.com/"]".

git config --list
git config --list --show-origin

Vypíše moje momentálne nastavenia. Verzia so "--show-origin" vypíše aj, z ktorého súboru sa načítalo ktoré nastavenie.

git config kľúč hodnota
git config --global kľúč hodnota

Nastaví daný kľúč na danú hodnotu v aktuálnom projekte, alebo vo všetkých mojich projektoch.

git config --global user.name 'Viliam'
git config --global user.email 'viliam@example.com'
git config --global fetch.prune true

Moje obľúbené používateľské nastavenia.