GNU/Linux >> Znalost Linux >  >> Linux

Jak spravovat verzi pomocí Git na příkazovém řádku

Git je jedním z nejrozšířenějších distribuovaných softwaru pro správu verzí na Linuxu mezi vývojáři, který usnadňuje koordinaci na stejném projektu.

Pokud neznáte Git, doporučujeme přečíst si tuto úvodní příručku o instalaci a zahájení práce s Git. Zatím byly ukázány pouze základní funkce. Patří mezi ně příprava pracovního prostoru a vytvoření různých úložišť, prostřednictvím souboru „fáze“ a „potvrzení“ změn, stejně jako případné odstranění nebo přejmenování souborů.

Dalším krokem je abyste pochopili, jak se pohybovat v různých verzích projektu. Jak naznačuje povaha softwaru, ve skutečnosti možnost vytváření nových a nekonečných úložišť, počínaje již existujícím dílem, nevyhnutelně vytváří řetězec různých cest, které všechny vycházejí ze stejného projektu.

Účelem této příručky je proto vysvětlit, jak správně spravovat verzování projektu, přecházením mezi různými větvemi (větvení), slučováním různých větví a obnovováním předchozích verzí. Tato příručka platí pro hlavní distribuce Linuxu a byla testována na Ubuntu 18.04.

Používání větví Git

Větvení je jednou z nejvýkonnějších funkcí Gitu. Větve se používají k implementaci různých a vzájemně nezávislých funkcí počínaje stejným kořenem. Hlavní větev projektu je generována při vytvoření "úložiště" a je označena jako "master".

První věc, kterou musíte udělat, abyste se naučili, jak se pohybovat mezi různými větvemi úložiště, je použít příkaz „git checkout“ a poté větev, na které se má pracovat:

    $ git checkout <branch>

Chcete-li se například přesunout a pracovat na hlavní větvi, použijte příkaz následovaný „master“, jak je znázorněno níže:

    $ git checkout master

Jakmile je označena větev pro vytvoření vašeho úložiště, soubory se přesunou do poslední fáze zvolené větve v pracovní složce. Veškeré budoucí změny pak vytvoří novou verzi projektu pro tuto konkrétní větev.

Vytvoření nové větve pomocí Git

Chcete-li vytvořit novou větev pomocí Git, stačí použít příkaz "git branch" následovaný názvem, který má být přidělena vytvořené větvi:

    $ git branch <nome_ramo>

Přesun do nově vytvořené pobočky není automatický. Chcete-li tedy pracovat na nově vytvořené pobočce, použijte příkaz "git checkout":

    $ git checkout <nome_ramo>

V tomto okamžiku bude každé potvrzení odkazovat na nově vytvořenou větev.

Na obrázku 1 jsou provedeny následující operace:

  • Přesuňte se do „hlavní“ větve;
  • Vytvoření nové větve (Test0);
  • Přesuňte se do nově vytvořené větve;
  • Přidání souboru (BranchTest);
  • Závazek změn;
  • Vraťte se do „hlavní“ větve.

Obr. 1 – Příklad vytvoření větve a závazku na Ubuntu 18.04

Vyhledání a odstranění větví Git

Příkaz "git branch" bez následování jednoduše uvolní seznam všech existujících větví.

    $ git branch

Chcete-li odstranit větev, použijte příkaz "git branch", v tomto případě následovaný argumentem "-d" a názvem větve, kterou chcete odstranit:

    $ git branch -d <nome_ramo>

Obrázek 2 ukazuje příklad seznamu poboček a smazání nově vytvořené pobočky (Test0).

Obr. 2 - Příklad seznamu poboček a eliminace na Ubuntu 18.04

Jak je znázorněno na obrázku, při pokusu o odstranění větve, na které byly provedeny změny, Git vrátí chybu. Vzhledem k tomu, že větev nebyla připojena (sloučení větví), aby nedošlo ke ztrátě veškeré práce provedené omylem, zabrání se její likvidaci.

Stále bude možné smazat větev pomocí argumentu "-D":

    $ git branch -D <nome_ramo>

Sloučení větví Git

Účelem poboček je vytvářet paralelní a nezávislé pracovní postupy za účelem experimentování s novými funkcemi, aniž by to ovlivnilo hlavní projekt (například verze "release", "beta" nebo "fix").
Z tohoto důvodu je pobočky jsou navrženy tak, aby měly krátkou životnost, která vyvrcholí sloučením s jinou pobočkou.

Větve lze sloučit pomocí příkazu "git merge" následovaného názvem větve, která má být sloučena.

    $ git merge <ramo_da_unire>

Je zřejmé, že k fúzi musí dojít mezi dvěma pobočkami. Příkaz "git merge" sloučí větev uvedenou v syntaxi s tou, na které se právě nacházíte. Chcete-li tedy provést "sloučení", ujistěte se, že prostřednictvím "git checkout" jste na větvi, se kterou chcete sloučit.
Proto uvedený příkaz "git merge" nezanechá žádné stopy po sloučení v historie "úložiště".

Velmi často může být nutné sledovat sloučení, takže stačí použít argument "--no-ff". Tímto způsobem Git automaticky provede nové potvrzení, aby v budoucnu identifikoval „sloučení“:

    $ git merge --no-ff <ramo_da_unire>

Sloučení dvou větví neznamená odstranění větve, která byla sloučena s uvedenou větví. Místo toho bude nadále existovat. Chcete-li jej trvale odstranit, pokračujte v eliminaci pomocí příkazu "git branch -d".

Na obrázku 3 je ukázán příklad sloučení mezi větvemi. Prováděné operace jsou zejména:

  • Přesuňte se do „hlavní“ větve;
  • seznam poboček;
  • Sloučení větve "Br01";
  • Zrušení pobočky "Br01".

Obr. 3 - Příklad větví sloučených na Ubuntu 18.04

Chcete-li získat seznam zobrazující pouze větve nesloučené s aktuální, použijte příkaz "git branch" následovaný argumentem "--no-merged".

    $ git branch --no-merged

Řešení konfliktů

Když jsou dvě větve sloučeny, Git automaticky určí, které ze dvou nadřazených odevzdání je nejlepší, a sloučí se s ním.
Git nemusí být schopen automaticky rozhodnout, kterou verzi souborů během této operace zachovat, a proto upozorní konflikt.
Pokud k této situaci dojde, vyřešte konflikt ručně a potvrďte provedené změny. Případně sloučení poboček neproběhne.

Tento výskyt nejlépe ukazuje následující příklad. Protože bere v úvahu dvě různé větve, kde jsou uloženy dvě různé verze stejného souboru, po sloučení Git zobrazí následující varování:

    CONFLICT (content): Merge conflict in <filename>
   
   Automatic merge failed; fix conflicts and then commit the result.

Chcete-li problém vyřešit, přejděte do složky, kde je konfliktní soubor, upravte jej a proveďte následné „přidat“ pomocí „potvrdit“. V případě textového souboru Git nahlásí problematické části v souboru vložením části přítomné pouze v první větvi a mezi "=" mezi "<<<<<<<<" a "=======" ======"a">>>>>>> "ten přítomný pouze ve druhém."

Ruční úpravou souboru a spuštěním příkazu "git add" následovaného " git commit" se obě větve konečně spojí, jak je znázorněno na obrázku 4.

V příkladu na obrázku 4 byly také řízeny nespojené větve, aby bylo jisté, že "sloučení" bylo správně provedeno.

Obr. 4 – Příklad řešení konfliktů a sloučení na Ubuntu 18.04

Po potvrzení se již větev "Br03" neobjevuje v seznamu odpojených větví, což dokazuje, že sloučení s větví "Br04" bylo úspěšné.

Správa značek Git

„Tagy“ nejsou nic jiného než štítky, které se připojují k různým „závazkům“ za účelem hlášení užitečných informací o verzi a projektu, na kterém pracujete.

Chcete-li zobrazit značky v "úložišti", použijte příkaz "git tag":

    $ git tag

V Gitu existují dva různé typy značek:„anotated“ a „lightweight“. První z nich se používají k označení úplných informací o verzi, jako je „kontrolní součet“, jméno vývojáře, datum/čas a případné komentáře. Druhým jsou jednoduché ukazatele na potvrzení.

Příkaz „git tag“ následovaný textem identifikace verze vytvoří „lightweight“ tag. Syntaxe je uvedena níže:

    $ git tag <Nome_Versione>

Použití argumentu "-a" místo toho vede k verzi značky "anotated":

    $ git tag -a <Nome_Versione> -m <Commento>

Nakonec, chcete-li zobrazit značku, použijte příkaz "git show", jak je uvedeno níže:

    $ git show <Nome_Versione>

Právě zkoumané příkazy vám umožňují přidávat „tagy“ pouze k poslednímu odevzdání. Chcete-li přidat značku ke staršímu odevzdání, uveďte po příkazu „git tag“ také identifikátor (kontrolní součet) odevzdání, na který se má odkazovat. Kompletní syntaxe je uvedena níže:

    $ git tag -a <Nome_Versione> <Checksum_Commit>

Chcete-li sledovat "kontrolní součet" různých provedených odevzdání, použijte příkaz "git log".

    $ git log --pretty=oneline

Po spuštění příkazu se na terminálu zobrazí seznam v chronologickém pořadí různých „kontrolních součtů“ odevzdání následovaný komentářem zadaným během fáze „potvrzení“ změn.


Linux
  1. Multi-tasking na příkazovém řádku s screenie

  2. Jak zjistit, jakou verzi OS X používám z příkazového řádku?

  3. Jak pomocí příkazu Linux „cat“ zobrazit pouze určité řádky podle čísla?

  1. Najděte verzi WordPress z příkazového řádku

  2. Jak získat verzi ovladače nvidia z příkazového řádku?

  3. Jak vytvořit zaváděcí USB ze zaváděcího ISO pomocí příkazového řádku v Linuxu?

  1. Seřadit pomocí řazení na příkazovém řádku

  2. Jak získám svou IP adresu z příkazového řádku?

  3. Jak mohu otevřít soubor s čísly řádků zobrazenými z příkazového řádku v 'vi'?