Zpátky

Verzování kódu v profesionálním prostředí

Verzování kódu v profesionálním prostředí používá dnes asi každý a git je nejvíce k tomu používaným softwarem.

Díky verzováním si můžeme uložit původní verzi a pak si ukládat veškeré změny přehledně a hlavně s možností se vrátit. Takže odpadá všemi známé: uložit soubor jako final, final2, final_final atd. Každá změna zaznamenaná gitem neboli “commit”, se uloží podle jména a času, takže se nestane, že se objeví změna o které nic nevíte a nemůžete to shodit na někoho. Můžete si vytvořit verzi s novou funkcionalitou a volně přepínat v čase kdy jste ji ješte nepřidali nebo jí úplně vymazat.(neboli branch)

Git má neuvěřitelně mnoho užitečných funkcí a tímto postem jen ukazuji špičku ledovce, ale i s jen s těmito základy si programátor ulehčí práci jak sám, tak i v týmu.

Historie

Git byl vytvořený v 7. dubna 2005 jako open-source program, počítačovým mágem Linusem Torvaldesm(ten co napsal linux kernel), chtěl totiž nahradit software BitKeeper který byl closed source. V roce 2008 byla založena platforma GitHub, která umožňuje hostovat Git repozitáře online. To vedlo k obrovské popularitě Gitu a usnadnilo spolupráci na projektech.

Rozšíření Gitu: Git se stal standardem pro správu verzí a používá se v mnoha oblastech vývoje softwaru a dalších odvětvích

Základní pojmy

  1. Repository (Repozitář): Repozitář je místo, kde Git ukládá a spravuje historii verzí projektu. Může to být lokální repozitář na vašem počítači nebo vzdálený repozitář na serveru.
  2. Commit: Commit je základní jednotka změn v Gitu. Reprezentuje uloženou verzi projektu v daném okamžiku. Každý commit obsahuje unikátní identifikátor (hash), autorovu zprávu a odkaz na předchozí commit.
  3. Branch (Větev): Větev je odnož od hlavního vývoje projektu. Umožňuje vám pracovat na různých částech projektu nezávisle a později je sloučit zpět do hlavní větve (často známé jako "master" nebo "main").
  4. Merge (Sloučení): Merge je proces, kdy se změny z jedné větve sloučí s jinou větví. To znamená, že změny provedené v jedné větvi se přidají do druhé větve.
  5. Pull Request (Žádost o sloučení): Pull Request je mechanismus pro navrhování a diskutování o změnách provedených v jedné větvi a jejich následné sloučení s jinou větví. Obvykle se používá v kontextu spolupráce na projektu.
  6. Clone (Klonování): Klonování je proces vytvoření kopie vzdáleného repozitáře na lokálním počítači. Tím umožňuje práci s projektem na vašem počítači a uchovávání historie verzí.
  7. Pull (Stažení): Pull je proces aktualizace vašeho lokálního repozitáře na základě změn ve vzdáleném repozitáři. Používá se pro synchronizaci změn z vzdáleného repozitáře do vašeho lokálního repozitáře

Asi každý zažil ve školních letech když musel spolupracovat se spolužáky ve stejném týmu. Možná se vaše krev se právě vaří nad vzpomínkama když jste se hádaly o vašem postupu. Jak se to vyřešilo? Ať si každý připíše co chce a pak se prezentujeme učitelce jako koláž nápadů? To asi ne, spíš jste vybraly, lídra a on pomalu přidával změny sám když ostatní jen koukali.

Co ale kdyby to šlo jinak ? Tedy aby si mohl si každý z týmu pracovat na své části a pak se to spojilo? Tedy změny by nebyly centralizované, ale distribuvané.

Příklad

Přestavte si že každý dělá doma na prezentaci a každý má svoji verzi. A někde na serveru třeba u učitelky bude hlavní verze(remote).

Pokud bude chtít udělat změnu stačí si stáhnout poslední verzi z remotu a začít ji měnit, žák si každou změnu sám podepíše aby se vědělo kdo to napsal a buď se změna jen zatím uloží lokálně a nebo se pošle rovnou na remote.

Zde někdo s dostatečným oprávněním si může tuto změnu odmítnout, nebo jí nechat přepsat hlavní verzi, říká se tomu merch.

Co ale když dva studenti udělají změnu na steném místě ?

Kterou změnu má havní verze vzít za svou ? Tomu se říká merge conflikt pak se musí pečlivě rozhodnout co se tam má nechat. pozn. merge konflikty patří k nejhorší věcí na práci s gitem, nejlepší je vůbec nedělat.

Co ale pokud budete mít bujarejší cíle a chcete si napsat prezentaci jak pro učitelku tak pro soutěž kde budete mluvit o více věcech nech ve škole.

Stačí si vytvořit branche(větve) s názvem škola a soutěž a kdykoliv si stačí z nich přepínat.

Takže prezentace s více informací bude v branchi “soutěž “a verze s méně bude ve “škola”

Závěr

V tomto blogovém příspěvku jsme prozkoumali základy Gitu, nástroje pro správu verzí a spolupráci na projektech. Pochopili jsme význam větví, základní operace a řešení konfliktů. Git je nepostradatelným nástrojem pro vývojáře a týmy, ať už jste začátečníkem nebo pokročilým. Děkujeme za čtení a těšíme se na další objevování světa Gitu!