NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.

Lekce 3 - Git - Základy

V minulé lekci, Git - Instalace, jsme si popsali Git klienty a jejich integraci do vývojových prostředí. Nainstalovali jsme si Git.

V dnešním Git tutoriálu dokončíme nastavení Gitu. Pak se už zaměříme na základní práci s Gitem. Probereme si správnou praxi pro tvorbu commitů, kterou také uplatníme při přidání souboru do commitu. Naučíme se vytvořit a sledovat stav repozitáře a přidat do něj soubor.

Všechny příkazy budeme zadávat v terminálu MinTTY. MinTTY otevřeme kliknutím na ikonu lupy v dolní liště, zadáním příkazu bash a výběrem možnosti Git Bash

Nastavení Gitu

Po instalaci Gitu z lekce Git - Instalace nám ještě zůstává úkol sdělit Gitu, kdo jsme. K tomu slouží dva jednoduché příkazy global user.name a global user.email pro nastavení našeho jména a e-mailové adresy:

$ git config --global user.name Jméno
$ git config --global user.email Emailová adresa

JménoEmailová adresa nahradíme svým jménem a e-mailovou adresou. Tyto údaje budou sloužit jako podpis pro každý commit, který provedeme.

Všechna nastavení si zobrazíme příkazem git config --list:

MINGW64:/c
ItNetwork@DESKTOP-ADEVTG4 MINGW64 /c
$ git config --list

diff.astextplain.textconv=astextplain
...
init.defaultbranch=main
core.editor=vim
[email protected]
user.name=Itnetwork
gui.recentrepo=
credential.helper=cache
...

Nyní si již můžeme představit commity.

Commity

Commit představuje snapshot neboli záznam o změnách provedených v projektu v daném okamžiku. Historie commitů umožňuje zpětně sledovat, jak se projekt vyvíjel, a obnovit stav projektu z libovolného minulého bodu.

Každý commit obsahuje:

  • Změny: Rozdíly mezi aktuálním a předchozím stavem projektu, včetně přidání, úprav nebo smazání souborů a složek.
  • Autora: Informace o autorovi změn.
  • Časové razítko: Čas vytvoření commitu.
  • Popis: Informativní popis provedených změn.
  • Odkazy na předchozí commity: Lineární historie změn s odkazy na předchůdce.

Každý commit má svůj unikátní identifikátor (hash), založený na obsahu, autorech a časovém razítku. Správně psané commity usnadňují spolupráci, vyhledávání změn a udržení přehledné historie.

Nyní se podíváme na příklad kvalitního commitu, který má specifický název a podrobný popis změn:

Commit: "Oprava chyby při zpracování platby PayPal"
Popis commitu: "Byla identifikována a opravena chyba ve funkci zpracování plateb PayPal, která způsobovala neočekávané chování při selhání připojení na PayPal API. Nyní je chyba odstraněna a zpracování plateb funguje spolehlivěji."

Zásady pro psaní kvalitních commitů

Kvalitní commit zlepšuje verzovací historii, usnadňuje spolupráci a zrychluje vyhledávání změn. Následující pravidla pomohou efektivnějšímu psaní commitů:

  • Stručný a výstižný název commitu: Název commitu by měl být krátký (ideálně do 50 znaků) a jasně by měl vystihovat povahu změn.
  • Podrobný popis změn: Popis změn by měl být dostatečně informativní, aby čtenář pochopil účel commitu bez prozkoumávání kódu.
  • Rozdělení změn na logické části: Větší commit obsahující několik různých změn rozdělíme na menší logické části.
  • Přítomný čas: Název i popis commitu píšeme v přítomném čase.
  • Odkazy na problémy nebo úkoly: Pokud projekt využívá nástroj ke sledování problémů (issue tracker), přidáme odkazy na příslušné problémy nebo úkoly.

Po nutné teorii o commitech se pomalu můžeme vrhnout na praxi. Začneme vytvořením projektu a repozitáře, který se naučíme sledovat. Pak si do repozitáře přidáme soubor, který následně přidáme i do stage. Nakonec soubor přidáme do commitu.

Vytvoření projektu

Pro naše účely vytvoříme nový projekt, na kterém si budeme ukazovat příkazy. Začneme tím, že na disku C: vytvoříme novou složku, kterou pojmenujeme Mujgit/.

Vytvoření repozitáře

V naší nové složce Mujgit/ si otevřeme terminál MinTTY. Otevření terminálu MinTTY jsme si ukázali v lekci Git - Instalace. V terminálu MinTTY vložíme příkaz git init pro vytvoření repozitáře:

MINGW64:/c
ItNetwork@DESKTOP-ADEVTG4 MINGW64 /c
$ git init
Initialized empty Git repository in C:/mujgit/.git/

Nový repozitář se fyzicky nevytvoří hned po zadání příkazu git init, ale až po vytvoření a potvrzení prvního commitu.

Vytvořila se nám nová složka .git/, ve které budou zdrojové kódy a informace o našem projektu. Výborně, právě jsme si vytvořili náš první repozitář :-)

Sledování stavu repozitáře

Základním prostředkem pro získání přehledu o aktuálním stavu repozitáře je použití příkazu git status. Tento příkaz poskytuje podrobné informace o změnách v souborech, nových souborech, souborech, které jsou připraveny ke commitu, a dalších relevantních informacích.

Po spuštění příkazu git status získáme následující informace:

  • Nezměněné soubory: Soubory, které nebyly od posledního commitu změněny, jsou uvedeny jako working tree clean.
  • Změněné soubory: Upravené soubory, které nebyly přidány do staging oblasti, jsou označeny jako Changes not staged for commit.
  • Soubory ve staging oblasti: Soubory, které jsou připraveny ke commitu, jsou uvedeny jako Changes to be committed.
  • Nové soubory: Nově vytvořené soubory jsou označeny jako Untracked files.
  • Aktuální větev: Zobrazí název aktuální větve, na které pracujeme.

Sledování stavu našeho repozitáře

Nyní se podíváme na stav našeho repozitáře ve složce Mujgit. Pokud se v této složce nenacházíme, přesuneme se do ní pomocí příkazu cd Mujgit:

MINGW64:/c
ItNetwork@DESKTOP-ADEVTG4 MINGW64 /c
$ cd Mujgit
ItNetwork@DESKTOP-ADEVTG4 MINGW64 /c/mujgit (main)

Nyní si zjistíme stav našeho projektu. Otevřeme si příkazovou řádku a spustíme příkaz git status:

MINGW64:/c/mujgit
ItNetwork@DESKTOP-ADEVTG4 MINGW64 /c/mujgit (main)
$ git status

On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)

nothing added to commit but untracked files present (use "git add" to track)

Pojďme si vysvětlit, co nám Git píše.

On branch master

Informace, že se nacházíme na větvi s názvem master.

No commits yet

Oznámení, že nebyly provedeny žádné commity na této větvi. Repozitář ještě neobsahuje historii změn.

Untracked files

Seznam nezaznamenaných souborů.

Nothing added to commit but untracked files present (use "git add" to track)

Upozornění, že jsme neprovedli žádné změny v commitech, ale máme nezaznamenané soubory, které můžeme přidat do repozitáře pomocí příkazu git add.

Přidání souboru

Nyní si ukážeme, jak přidat soubor do repozitáře a provést commit. Začneme vytvořením nového souboru index.html ve složce Mujgit. Do souboru index.html si pak vložíme následující HTML kód:

<!DOCTYPE html>
<html>
    <head>
        <title>Název stránky</title>
    </head>
    <body>
        <p>Text na stránce</p>
    </body>
</html>

Po vytvoření souboru zkontrolujeme stav pracovního adresáře pomocí příkazu git status:

MINGW64:/c/mujgit
ItNetwork@DESKTOP-ADEVTG4 MINGW64 /c/mujgit (main)
$ git status

On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        index.html    //Náš nově vytvořený soubor

nothing added to commit but untracked files present (use "git add" to track)

Přidání souboru do stage

Abychom začlenili soubor index.html do verzovacího systému, přidáme ho do staging oblasti pomocí příkazu git add <název souboru>:

MINGW64:/c/mujgit
ItNetwork@DESKTOP-ADEVTG4 MINGW64 /c/mujgit (main)
$ git add index.html
ItNetwork@DESKTOP-ADEVTG4 MINGW64 /c/mujgit (main)

Pro přidání více souborů najednou bychom použili jejich názvy oddělené mezerou: git add soubor_1 soubor_2 adresář/soubor_1. Pro přidání všech souborů v pracovním adresáři do staging oblasti bychom použili zkrácený zápis: git add ..

Nyní zadáme znovu příkaz git status, abychom viděli, že soubor index.html byl přidán do staging oblasti:

MINGW64:/c/mujgit
ItNetwork@DESKTOP-ADEVTG4 MINGW64 /c/mujgit (main)
$ git status

On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   index.html

Untracked files:
  (use "git add <file>..." to include in what will be committed)

Soubor index.html je nyní připraven k přidání do commitu.

Přidání souboru do commitu

Po přidání všech potřebných souborů do staging oblasti vytvoříme commit příkazem commit -m "Název commitu":

MINGW64:/c/mujgit
ItNetwork@DESKTOP-ADEVTG4 MINGW64 /c/mujgit (main)
$ git commit -m "Přidán soubor index.html"
[main (root-commit) c61bcd4] Přidán soubor index.html
 1 file changed, 9 insertions(+)
 create mode 100644 index.html

Hodnoty c61bcd4 a 100644 můžete mít jiné.

Commit si ověříme příkazem git log:

MINGW64:/c/mujgit
ItNetwork@DESKTOP-ADEVTG4 MINGW64 /c/mujgit (main)
$ git log
commit c61bcd487e6b90a6f283c147ff20dcea65f05b5c (HEAD -> main)
Author: itnetwork <[email protected]>
Date:   Wed Aug 30 10:42:37 2023 +0200

    Přidán soubor index.html

V příští lekci, Git - Základy - Dokončení, si vyzkoušíme tvorbu commitu s delším popisem. Naučíme se také naklonovat cizí repozitář a používat soubor .gitignore.


 

Předchozí článek
Git - Instalace
Všechny články v sekci
Git
Přeskočit článek
(nedoporučujeme)
Git - Základy - Dokončení
Článek pro vás napsal Patrik Valkovič
Avatar
Uživatelské hodnocení:
469 hlasů
Věnuji se programování v C++ a C#. Kromě toho také programuji v PHP (Nette) a JavaScriptu (NodeJS).
Aktivity