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

 

GitMagic (2) – základní triky

Google       Google       19. 6. 2009       19 110×

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í.

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 Stavebnice umělé inteligence 1

Stavebnice umělé inteligence 1

Článek popisuje první část stavebnice umělé inteligence. Obsahuje lineární a plošnou optimalizaci.  Demo verzi je možné použít pro výuku i zájmovou činnost. Profesionální verze je určena pro vývojáře, kteří chtějí integrovat popsané moduly do svých systémů.

Obrázek ke článku Hybridní inteligentní systémy 2

Hybridní inteligentní systémy 2

V technické praxi využíváme často kombinaci různých disciplín umělé inteligence a klasických výpočtů. Takovým systémům říkáme hybridní systémy. V tomto článku se zmíním o určitém typu hybridního systému, který je užitečný ve velmi složitých výrobních procesech.

Obrázek ke článku Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Vedení týmu v oboru informačních technologií se nijak zvlášť neliší od jiných oborů. Přesto však IT manažeři čelí výzvě v podobě velmi rychlého rozvoje a tím i rostoucími nároky na své lidi. Udržet pozornost, motivaci a efektivitu týmu vyžaduje opravdu pevné manažerské základy a zároveň otevřenost a flexibilitu pro stále nové výzvy.

Obrázek ke článku Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Za poslední rok se podoba práce zaměstnanců změnila k nepoznání. Především plošné zavedení home office, které mělo být zpočátku jen dočasným opatřením, je pro mnohé už více než rok každodenní realitou. Co ale dělat, když se při práci z domova ztrácí motivace, zaměstnanci přestávají komunikovat a dříve fungující tým se rozpadá na skupinu solitérů? Odborníci na personalistiku dali dohromady několik rad, jak udržet tým v chodu, i když pracovní podmínky nejsou ideální.

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