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

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

 
Hledat
Moderní platforma pro vytvoření vašeho nového webu – Wix.com.
Nyní už můžete mít web zdarma.
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno

GitMagic (2) – základní triky

Google       Google       19. 6. 2009       16 608×

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

Reklama
Reklama
Obrázek ke článku Pracujete u počítače ve stoje? Dbejte na správné držení těla

Pracujete u počítače ve stoje? Dbejte na správné držení těla

Práce ve stoje je jedna z variant, jak změnit polohu těla při dlouhodobé práci u počítače. Především je důležité nezapomínat na správné držení těla, abychom při práci nenamáhali naší krční páteř. Primářka MUDr. Michaela Tomanová představí hlavní bonusy a rizika práce u počítače ve stoje.

Obrázek ke článku Firmy musejí s nástupem Průmyslu 4.0 více dbát na kyberbezpečnost. V ohrožení je i jejich know-how.

Firmy musejí s nástupem Průmyslu 4.0 více dbát na kyberbezpečnost. V ohrožení je i jejich know-how.

Destabilizace firmy či ukradené know-how. To jsou možná hlavní budoucí rizika spojená s nedostatečnou kybernetickou bezpečností průmyslových firem, na která upozorňují experti. Vzhledem k postupující digitalizaci výrobních či technologických procesů a přechodu k takzvanému Průmyslu 4.0 může těchto hrozeb postupně přibývat. Varují před nimi i nejnovější průzkumy. 

Obrázek ke článku Nový CEBIT je připraven: Pochopit digitální dnešek a objevit digitální zítřek

Nový CEBIT je připraven: Pochopit digitální dnešek a objevit digitální zítřek

Nový veletrh  CEBIT je připraven. V polovině června začne v Hannoveru evropský festival obchodu s radikálně změněnou koncepcí věnovaný inovacím a digitalizaci.  CEBIT jedinečnou formou spojuje obchod v digitálním hospodářství 
s festivalovými prvky a posouvá do středu pozornosti téma digitální transformace hospodářství a společnosti.  

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