Git
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
Obsah
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.