git: Rozdiel medzi revíziami
(Vytvorená stránka „{{DISPLAYTITLE:Git}} Git je nástroj na správu verzií programov a dokumentov (version control). * [https://git-scm.com/docs zoznam príkazov] * [https://git-scm.com/…“) |
|||
Riadok 22: | Riadok 22: | ||
git clone ''<nowiki>https://example.com/example-user/example-project.git</nowiki>'' | git clone ''<nowiki>https://example.com/example-user/example-project.git</nowiki>'' | ||
− | V aktuálnom adresári vytvorí podadresár "example-project", do ktorého stiahne projekt. | + | 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'' ''<nowiki>https://example.com/example-user/example-project.git</nowiki>'' | ||
+ | |||
+ | 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. | ||
+ | |||
+ | === 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 "<nowiki>https://example.com/</nowiki>"]". | ||
+ | |||
+ | 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. |
Verzia zo dňa a času 20:27, 16. november 2023
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.
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.