Jak Git usnadňuje práci s kódem | robot_dreams Czech
should_authorize_via_email
email.input_code tel.input_code
 
email.code_actual_for tel.code_actual_for
apply_exit_text
session_ended
to_homepage
Jak Git usnadňuje práci s kódem

Jak Git usnadňuje práci s kódem

Minimum, které by měl znát každý vývojář.

Systémy pro kontrolu verzí (VCS) sledují změny v souborech. Pomáhají vývojářům 

zaznamenávat stav kódu a vracet se k předchozím verzím. Pomocí řídicích systémů mohou vývojáři současně pracovat na jednom projektu, aniž by si navzájem měnili kód. Systém VCS vytváří snímky souborů, ke kterým se lze po změnách vrátit. Nejoblíbenějším systémem je Git. Poradíme vám, jak s jeho pomocí spravovat verze kódu.

Začínáme

Stav git kódu je spravován pomocí textových příkazů v terminálu. Pro počáteční konfiguraci použijte příkaz git config s uživatelským jménem a e-mailem.

git config –global user.name "name"
git config –global user.email "name@gmail"

Ke všem příkazům můžete přidat označení (volby), které upravují jejich provedení. Například global znamená, že změny se budou vztahovat na globální konfiguraci uživatele. Při vytváření revizí se k identifikaci autora použijí údaje o uživateli.

V systému Git je kód umístěn v repozitáři – lokálním (na počítači), vzdáleném (na serveru) nebo distribuovaném (na počítači i na serveru). Lokální repozitář vytvoříte v pracovním adresáři příkazem git init. Pokud potřebujete stáhnout (klonovat) úložiště ze vzdáleného serveru do počítače, zadejte příkaz git clone s odkazem na úložiště třetí strany nebo SSH (protokol pro přenos dat).

H:\SOURCE\LMS>git clone https://github.com/instructure/lms.git
Cloning into 'lms'...
remote: Enumerating objects: 737104, done.
remote: Counting objects: 100% (37790/37790), done.
remote: Compressing objects: 100% (10079/10079), done.
remote: Total 737104 (delta 28167), reused 36757 (delta 27184), pack-reused 699314
Receiving objects: 100% (737104/737104), 921.15 MiB | 15.16 MiB/s, done.
Resolving deltas: 100% (566500/566500), done.
Updating files: 100% (16751/16751), done.

Změny z klonovaného repozitáře se stahují pomocí příkazu git pull.

H:\SOURCE\LMS>git pull
Already up to date.

Přidávání souborů

Soubory mají tři stavy:

  • Untracked – soubor ještě nebyl přidán do úložiště;
  • Modified – soubor již byl v úložišti a byl změněn;
  • Staged – indexovaný soubor, který lze přidat do úložiště.

Stav souborů můžete zobrazit pomocí git status.

On branch main
Your branch is up to date with 'origin/main'.
 
nothing to commit, working tree clean

Do úložiště se přidávají pouze staged soubory. Soubory se indexují příkazem git add. Můžete si vybrat:

  • všechny soubory používající parametr -a;
  • část souborů podle názvu nebo přípony.
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   new_file.txt

Protokoly a soubory není nutné indexovat. „Přebytečné“ soubory se zapisují do .gitignore – speciálního textového souboru v kořenovém adresáři, kde jsou specifikovány výjimky. Git přečte tento soubor a výjimky přeskočí.

# Compiled class file #
*.class

# Log file
*.log

# Package Files #
*.jar
*.war
*.nar

# Build directory #
build/

Syntaxe příkazu gitignor je jednoduchá:

  • prázdné řádky jsou při čtení ignorovány;
  • soubory a adresáře jsou uvedeny na novém řádku;
  • komentáře jsou označeny #;
  • je uveden název nebo přípona souboru;
  • adresáře jsou označeny /.

Abyste nemuseli gitignore psát sami, můžete jej vygenerovat pomocí služby třetí strany – například gitignore.io.

Commit – operace, která přidá všechny indexované soubory do úložiště pomocí příkazu git commit -m "changes message". Parametr m přidává popis změn. U commits je uvedeno jméno autora, čas přidání, hash a popis provedených změn. Chcete-li odeslat na vzdálený server, musíte zadat příkaz git push.

Chcete-li procházet všechny revize a sledovat historii změn, můžete použít příkaz git log. log vrátí popis všech revizí, jejich hashovací funkci a autory, revize jsou zobrazeny v pořadí od nejnovější po nejstarší.

    Init commit 
 
commit 429211da2fd03394e9c53c32f73cr964f3bad436
Author: Dmytro <[email protected]>

Git Flow

Programátoři stejného týmu píší různé funkce programu ve stejnou dobu. Pro zefektivnění správy vývoje se používá praxe rozdělení úložiště do větví Git Flow. Jsou vytvořeny větve Main, Develop a větve zodpovědné za samostatnou funkcionalitu (Feature). Větve označují commity, které k nim patří. Myšlenka je taková, že Main je zodpovědný za pracovní verzi a implementace jednotlivých funkcí se sloučí až v Develop. Když je tým připraven ke zveřejnění, vytvoří větev, která bude poté sloučena s hlavní větví. Tímto způsobem získá Main zaručeně funkční kód.

Chcete-li vytvořit větev s funkcí, musíte zadat příkaz git branch [feature_name]. Příkaz git branch bez zadání názvu vypíše všechny lokální větve a parametr –r zobrazí větve ve vzdáleném repozitáři.

* main
  develop

Když chce vývojář sloučit změny do některé z větví, přepne se do ní příkazem git checkout [branch_name] a poté větve sloučí příkazem git merge [branch_name]. Chcete-li odstranit nepotřebnou větev, použijte git branch -d [branch_name].

Zrušení změn

V některých situacích nový kód rozbije starou funkci a je třeba se vrátit k funkční verzi. Existuje několik způsobů, jak vrátit změny zpět, ty nejjednodušší jsou:

  • git checkout [hash_code] – vrátí se k revizi se zadaným hashem;
  • git revert [hash_code] – zruší zadanou revizi a vytvoří novou.

Ke commitům se přistupuje pomocí jejich hashů. Hash kódy jsou dlouhé, ale není nutné je psát celé – Git identifikuje revizi podle prvních čtyř znaků. Pokud nejste programátoři, ale pracujete s kódem, můžete použít grafické uživatelské rozhraní pro Git (např. GitHub Desktop nebo GitKraken). Grafická uživatelská rozhraní jsou integrována do většiny IDE – například Intellij IDEA má implementaci. Abyste si nemuseli pamatovat všechna označení příkazů, můžete se podívat do dokumentace pomocí příkazu git help [command_name].

Autor: Dmytro Bidenko

Více článků
A proč je užitečná pro každého, kdo pracuje s computer vision
Kde můžeš začít navazovat vztahy s lidmi se zájmem o IT?