Git rýchlo
Krátky zoznam užitočných príkazov git-u pre tých, ktorí už vedia, ako git funguje.
Tento článok som napísal pre používateľov, ktorí sa chcú naučiť používať git - systém na správu verzií zdrojových kódov, ktorý vytvoril Linus Torvalds.
Článok je napísaný vo forme otázka: odpoveď a je teda akýmsi prehľadom základných potrieb používateľa pri každodennom používaní git-u. Nezahŕňa väčšinu príkazov a pokrýva iba najnutnejšiu oblasť, ktorú každý nutne potrebuje. Množstvo vecí bolo prebratých z git tutoriálu. Tak, pusťme sa do toho.
- Pridal som nové súbory/adresáre, ktoré chcem dať do repozitára
- najpoužívanejšie:
git add adresar-> pripraví zmeny súborov rekurzívne v adresári adresar do gitového indexu; nové ignorované súbory vynechá a commit ešte nevytvorí - všeobecne:
git add subor1 subor2 ... git add .-> pripraví zmeny súborov rekurzívne z aktuálneho adresára do indexu; nové ignorované súbory vynechá (tiež zmeny necommitne)
- najpoužívanejšie:
- Chcem vytvoriť commit
- najpoužívanejšie:
git commit -a-> automaticky pripraví zmeny a odstránenia sledovaných súborov a commitne ich spolu s obsahom indexu; nové nesledované súbory sám nepridá git add zmenene_subory ; git commit-> najprv pripraví zmeny uvedených súborov do indexu a potom commitne celý obsah indexu
- najpoužívanejšie:
- Chcem si pozrieť, aké commity už mám
git log-> vypíše zoznam commitov (konkrétne zmeny neuvádza)git log --since="kedy"-> vypíše zoznam commitov od “kedy” do súčasnosti, kde “kedy” môže byť napr.: “3.11.2006”, “3 minutes ago”, “4 days ago”, ….git log -p-> vypíše okrem zoznamu commitov aj konkrétne zmeny, ktoré boli vykonané (diff-y)git log --graph-> vypíše textovo-grafický zoznam commitov (pekné)
- Chcem zistiť, aké zmeny som urobil v repo (ktoré ešte nemám commitované)
git diff-> zobrazí zmeny v pracovných súboroch oproti indexu (zmeny ešte nepripravené na commit)git diff --cached-> zobrazí zmeny v indexe oproti poslednému commitu (HEAD), teda zmeny pripravené na commit- najpoužívanejšie:
git status-> vypíše zmeny pripravené aj nepripravené na commit a tiež nesledované súbory (untracked files), ktoré nie sú ignorované
- Chcem poslať zmeny na server
git push server master-> aktualizuje vetvu master na serveri server podľa lokálnej vetvy master a odošle chýbajúce dáta jej histórie. Vynechanie názvu vetvy závisí od konfigurácie; prvé spustenie si ho automaticky nezapamätá. Adresu servera možno zadať napríklad cez SSH alebo HTTPS; podporované sú aj ďalšie protokoly, ak server umožňuje zápis
- Chcem si stiahnuť zmeny, ktoré urobil niekto iný (zo servera)
- najpoužívanejšie:
git pull server master-> stiahne vetvu master zo servera server a začlení ju do aktuálnej lokálnej vetvy podľa zvoleného spôsobu integrácie (fast-forward, merge alebo rebase). Vynechanie názvu vetvy závisí od konfigurácie, nie od predchádzajúceho spustenia git fetch server; git merge-> najprv stiahne dáta zo servera a aktualizuje príslušné vzdialené sledovacie vetvy; potom zlúči nakonfigurovanú upstream vetvu do aktuálnej vetvy. Zodpovedá predchádzajúcemu príkladu len pri správne nastavenej upstream vetve a použití merge
- najpoužívanejšie:
Push bol odmietnutý, pretože vzdialená vetva obsahuje commity, ktoré moja lokálna vetva nemá (non-fast-forward)
To ešte neznamená konflikt v súboroch. Nasledujúci postup predpokladá nastavenú upstream vetvu, správny cieľ pre push a pull nakonfigurovaný na merge.
git fetch server-> stiahnem dáta zo servera a aktualizujem vzdialené sledovacie vetvy; pracovné súbory sa tým nezlúčia ani sa ešte nezisťujú konflikty pri zlučovanígit show FETCH_HEAD-> pozriem si commit označený FETCH_HEAD a jeho zmeny; tento príkaz nevypisuje zoznam všetkých prichádzajúcich commitov (krok je možné vynechať)git pull server-> stiahnem aktuálne zmeny a zlúčim ich s aktuálnou vetvou. Ak Git nedokáže zmeny zlúčiť automaticky, ohlási konflikty; textové konflikty vyznačí v dotknutých súborochgit diff-> pri konflikte si pozriem zmeny v dotknutých súboroch- prípadné konflikty v súboroch vyriešim ručne.
git commit -a-> po vyriešení konfliktov dokončím merge commit; ak zlúčenie prebehlo automaticky, tento krok netreba. Príkaz zahrnie aj ostatné zmeny sledovaných súborov a obsah indexugit push server-> odošlem výslednú históriu do nakonfigurovanej cieľovej vetvy
- Chcem si pozrieť obsah súboru readme.txt v predkovi vetvy “master”, ku ktorému sa dostanem desiatimi krokmi vždy cez prvého rodiča commitu
git show master~10:readme.txt
Comments powered by Disqus.