GitMagic (2) – základní triky
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

GitMagic (2) – základní trikyGitMagic (2) – základní triky

 
Hledat
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno
Pergoly a střechy Brno

GitMagic (2) – základní triky

Google       Google       19. 6. 2009       17 679×

Další kapitola GitMagic, tentokráte představující základy práce s Gitem jako takovým. Ideální pro ty, co se o Gitu zrovna dozvěděli nebo s ním začínají.

Reklama
Reklama

Než se potápět do moře Gitovských příkazů, radši použijte tyto základní příklady použití ke smočení si chodidel. Pomineme-li jejich jednoduchost, každý z nich je užitečný. Ve svých prvních měsících s Gitem jsem si opravdu nikdy nedovolil jít dál, než co naleznete v této kapitole.

Ukládání stavu

Chystáte se na něco drastického? Než tak učiníte, udělejte si zálohu všech souborů v současném adresáří pomocí:

$ git init
$ git add .
$ git commit -m "Moje první záloha"

Pokud se vaše úpravy nevydaří, spusťte:

$ git reset --hard

Čímž se dostanete tam, kde jste byli před úpravami. K uložení stavu znovu spusťte:

$ git commit -a -m "Další záloha"

Přidávání, mazání, přejmenovávání

Příkaz výše zaznamená pouze změny souborů, které byly přítomny, když jste poprvé spustili git add. Pokud chcete přidat nové soubory či podadresáře, musíte to Gitu říct:

$ git add NOVE…

Podobně, pokud chcete, aby se Git o nějaké soubory již více nezajímal, možná proto, že jste je vymazali:

$ git rm STARE…

Přejmenovat soubor je to samé jako říct Gitu, aby zapomněl na starý soubor, a přidat nový. Existuje také zjednodušení git mv, které má stejnou syntaxi jako příkaz mv. Například:

$ git mv STARY NOVY

Pokročilé zpět a znovu

Někdy se chcete vrátit a zapomenout na všechny změny po nějakém bodu, protože jsou všechny špatně.

$ git log

Toto vám ukáže seznam posledních commitů a jejich SHA1 hashe. Napište:

$ git reset --hard SHA1_HASH

k obnovení stavu v daném bodě a vymazání všech novějších commitů nadobro.

Jindy je zase potřeba jednoduše skočit zpátky ke staršímu stavu. V tomto případě napište:

$ git checkout SHA1_HASH

Toto vás vezme zpátky v čase, přičemž zachová všechny novější commity. Avšak pokud nyní provedete úpravy a commit, budete, podobně jako je to s cestováním v čase ve sci-fi filmech, v alternativní realitě, protože všechny akce jsou odlišné od toho, co jste udělali prvně.

Této alternativní realitě se říká „větev“ (ang. branch) a povíme si o tom později. Pro tentokráte si prostě zapamatujte, že:

$ git checkout master

vás vezme zpátky do současnosti. Další důležitá poznámka, abyste zastavili Git ve stěžování si, vždycky prověďte commit nebo reset před checkoutem.

Kdybychom se vrátili zpět k analogii počítačových her:

  • git reset --hard: Načti starou uloženou pozici a vymaž všechny uložené pozice novější než ta, která je právě načtená.
  • git checkout: Načti starou pozici. Pokud ale budete pokračovat v hraní, postup ve hře se bude lišit od novějších uložených poprvé. Jakákoli hra, kterou od teďka uložíte, skončí v jiné větvi reprezentující alternativní realitu, do které jste vstoupili. O tom ale později…

Můžete si vybrat, že chcete obnovit pouze určité soubory a podadresáře tím, že je připojíte na konec příkazu:

$ git checkout SHA1_HASH nejaky.soubor dalsi.soubor

Dávejte si ale pozor, protože tato forma checkoutu může naprosto potichu přepsat vybrané soubory. Abyste zabránili tomu nejhoršímu, vždycky před checkoutem nejdříve proveďte commit, obzvláště pokud s Gitem začínáte. Obecně, pokud si nejste nějakou operací jistí, ať se jedná o příkaz Gitu či ne, nejdříve spusťte git commit -a.

Nemáte rádi kopírování a vkládání hashů? Pak můžete použít:

$ git checkout :/"Moje první zá"

ke skoku na commit, jenž začíná na Moje první zá. Taktéž můžete skočit na pátý poslední uložený stav:

$ git checkout master~5

Vracení se

U soudu mohou být některé věci vyškrtnuty ze záznamu. Podobně můžete vzít určité commity a vrátit je.

$ git commit -a
$ git revert SHA1_HASH

vrátí pouze commit s předaným hashem. Pokud spustíte git log, uvidíte, že vrácení se je zaznamenáno jako nový commit.

Stahování souborů

Kopii projektu spravovaného pomocí Gitu získáte napsáním:

$ git clone git://server/cesta

Například, pokud chcete získat všechny soubory, které jsem použil pro vytvoření této stránky (pozn. překl.: této stránky):

$ git clone git://git.or.cz/gitmagic.git

Již brzy si rozebereme příkaz clone podrobněji.

Bleeding edge

Pokud již máte kopii projektu staženou pomocí git clone, můžete aktualizovat na novejší verzi s:

$ git pull

Uveřejnění v sáčku

Předpokládejme, že jste napsali skript, který byste rádi sdíleli s ostatními. Mohli byste jim prostě říci, aby ho stáhli z vašeho počítače, ale pokud by tak udělali zatímco byste skript vylepšovali nebo dělali experimentální změny, mohlo by to pro ně skončit špatně. Samozřejmě, že toto je důvod, proč existují vydávací cykly. Vývojáři mohou na kódu pracovat pořád, ale uveřejní ho pouze, cítí-li, že je kód prezentovatelný.

K tomu, abyste toto zvládli s Gitem, v adresáři se skriptem spusťte:

$ git init
$ git add .
$ git commit -m "První vydání"

Potom můžete ostatním říct, aby si skript stáhli pomocí:

$ git clone vas.pocitac:/cesta/ke/skriptu

Předpokladem je, že ostatní mají k vašemu počítači přístup skrz SSH. Pokud tomu tak není, spusťte git daemon a řekněte ostatním, aby vytvořili kopii následovně:

$ git clone git://vas.pocitac/cesta/ke/skriptu

Odteď vždycky, když je skript zralý vydání:

$ git commit -a -m "Další vydání"

a ostatní mohou aktualizovat jejich verzi vstoupením do adresáře obsahujícího skript a napsáním:

$ git pull

Ostatní nikdy neskončí s verzí skriptu, kterou nechcete, aby viděli. Samozřejmě tenhle trik funguje pro cokoli, nejen skripty.

Co jsem to udělal?

Zjistěte, jaké změny jste udělali od posledního commitu s:

$ git diff

Nebo od včerejška:

$ git diff "@{yesterday}"

Nebo mezi určitou a druhou poslední verzí:

$ git diff SHA1_HASH "master~2"

V každém případě je výstupem patch, který může být použit s git apply. Vyzkoušejte si také:

$ git whatchanged --since="2 weeks ago"

Často se brouzdám historií s qgit, jelikož má hezké grafické rozhraní (GUI), nebo pomocí tig, textového rozhraní (TUI), které pracuje dobře na pomalých linkách. Alternativně si nainstalujte webserver, spusťte git instaweb a otevřete jakýkoli webový prohlížeč.

Cvičení

Nechť jsou A, B, C a D čtyři úspěšné commity, kde B je stejný jako A s tím, že pár souborů bylo odstraněno. Řekněme, že chceme přidat tyto soubory zpátky v commitu D a ne B. Jak na to?

  1. Rozdíl mezi A a B jsou odstraněné soubory. Můžeme vytvořit patch reprezentující tuto změnu a aplikovat ho:
    $ git diff B A | git apply
  2. Jelikož soubory jsou uloženy v commitu A, prostě si je vyvoláme:
    $ git checkout A SOUBORY...
  3. Na změnu mezi A a B se můžeme dívat jako na akci, kterou chceme vrátit:
    $ git revert B

Která z těchto možností je nejlepší? Ta, která se vám líbí nejvíce. S Gitem je jednoduché docílit toho, co chcete, a často je to mnoho způsobů, jak to udělat.

Tento článek je překladem druhé kapitoly – Basic Tricks – z GitMagic od Bena Lynna. V další kapitole se můžete těšit na podrobnější informace o klonování repozitářů.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

2 názory  —  2 nové  
Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Jakub KulhanAutor momentálně studuje na osmiletém gymnáziu v Kralupech nad Vltavou. Programování se věnuje od 11 let, kdy ho poprvé uchvátila možnost "mít vlastní stránky". Nakrátko poté objevil PHP a už se to s ním "vezlo". Webové aplikace zůstaly jeho hlavní doménou, ale ve svém volném čase probádává nejrůznější zákoutí světa programování, programovacích jazyků a všeho kolem nich.
Web    

Nové články

Obrázek ke článku Konference: Moderní informační systémy podporují automatizaci

Konference: Moderní informační systémy podporují automatizaci

Současná situace v šíření onemocnění Covid-19 klade na řadu firem nové nároky a mnohé z nich jsou nyní více než kdy jindy závislé na nejmodernějších informačních technologiích. Proto i v oblasti podnikových informačních systémů vidíme rostoucí důraz na automatizaci nebo na důslednou integraci. Také o těchto trendech se bude mluvit na konferenci Firemní informační systémy, která se koná 24.9.2020 v pražském Kongresovém centru Vavruška na Karlově náměstí.

Reklama
Reklama
Obrázek ke článku Nebezpečí ukrytá v USB: z nuly na škvarek za pět sekund

Nebezpečí ukrytá v USB: z nuly na škvarek za pět sekund

Za cenu šesti dolarů lze celkem bez obtíží koupit nový, líbivě vyhlížející flash disk. Přidaná hodnota, které se vám spolu s ním dostane, už tak moc líbivá není. To, co se před pár sekundami tvářilo jako externí disk, se po připojení k počítači změní v důmyslné elektrické křeslo, které vaše zařízení v onen příslovečný škvarek promění za pár sekund. Cílovou skupinou pro koupi takových zařízení by mohli být záškodníci, kteří by tímto způsobem osnovali pomstu třeba vůči záletnému partnerovi. 

Obrázek ke článku Znalosti, dovednosti i prestižní titul MBA: Jde to i moderně a online

Znalosti, dovednosti i prestižní titul MBA: Jde to i moderně a online

Snad nikdy není špatná příležitost na investici do hodnotného vzdělání. Obzvlášť v případě, že absolvent dovede teoretické poznatky přetavit v praktické dovednosti, využitelné při řešení problémů i v komunikaci. Právě na to se specializuje studijní program MBA Řízení informačních technologií, vyučovaný na Business Institutu.

Obrázek ke článku Coding Bootcamp Praha: Obor IT krize nepoznamenala, žádaní jsou weboví vývojáři

Coding Bootcamp Praha: Obor IT krize nepoznamenala, žádaní jsou weboví vývojáři

Pandemie Covid-19 otřásla trhem práce v základech. Dopady krize pocítilo celkově až 45 % zaměstnanců. Není divu, že čím dál větší jistotu přináší obor IT. Ten zůstal krizí téměř nepoznamenán a při nutnosti začít dělat věci na dálku se ještě více ukázalo, jak moc mnohé firmy kvalitní IT potřebují. Do IT nyní přicházejí začátečníci, kteří v něm vidí lukrativní budoucnost a jistotu, ale i freelanceři a zaměstnanci z oborů zasažených krizí

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032020 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý