Git

MVOP WBF

Bc. Matěj Cajthaml — SSPŠ

©

Git

Git

  • distribuovaný systém
  • verzovací systém
  • určen pro práci na týmových projektech
  • využívá se i samostatně

Co znamená distribuovanost?

Základní pojmy

  • repository = (typicky) jeden projekt, kompletní podoba práce
  • commit = ucelený balíček změn (přidání, odstranění souboru, ...) se zprávou
    • autor
    • zpráva změn
    • jsou ukládané historie, orientované
  • branch = část repozitáře, obvykle určen k části vývoje

Dva kroky

  • sdílení práce s ostatními je rozdělena na dva kroky

  • uložení práce do lokálního repozitáře (commit)
  • vyměněna práce se vzdáleným repozitářem (push a pull)

Git centralizovaně

  • přestože je git distribuovaný, často se používá centralizovaně
  • potom existuje vdálený hlavní repozitář, který slouží jako server
  • propojení repozitáře je realizováno pomocí remote repozitářů
  • gitové služby

Služby

  • GitHub
  • GitLab
  • GitLab self-hosted
  • BitBucket

Git klienti

Celý git je založen na pár příkazech, které se používají v konzolové řádce.

Git klienti

  • GitKraken
  • GitHub Desktop
  • Sourcetree

Commity by měly být zřetelně pojmenované a říkat, co se změnilo. Neměly by popisovat každou změnu výčtem.

Commity mají obsahovat jednu ucelenou změnu, po které je projekt funkční.

Tedy, když se chceme vrátit k jakémukoliv commitu, bude projekt funkční.

Soubor .gitignore

  • určuje, jaké soubory se na git nikdy nepošlou
  • tyto kontroly provádí git při přidání (git add)
  • pro naše projekty to jsou:
    • node_modules
    • dist
    • .vscode
    • a další

Větve

Branch

  • = větev změn
  • často používáme pro rozdělení práce více lidem
  • každý pracuje na jednotné změně a potom se větve sloučí (tzv. pull/merge request a merge)
  • hlavní větev bývá main či master

Větve

                        gitGraph
                            commit id: "init"
                            commit id: "chore: add .gitignore"
                            branch develop
                            checkout develop
                            commit id: "feat: new way to login"
                            commit id: "fix: login bug #123"
                            checkout main
                            merge develop
                            commit id: "chore: release v1.0.0"
                    

Jaký problém by mohl nastat při používání větví?

Merge conflict

  • když se soubor od větve změnil natolik, že nelze rozpoznat co má zůstat
  • poté je nutné určit co v souboru po spojení zůstane
  • doporučuji se vyhnout úpravám pomocí příkazů

Merge conflict

                        gitGraph
                            checkout main
                            commit id: "init"
                            checkout main
                            branch matej
                            checkout main
                            branch denis
                            checkout matej
                            commit id: "feat: new website name"
                            commit id: "feat: other changes"
                            checkout main
                            merge matej
                            checkout denis
                            commit id: "fix: login bug #123"
                            commit id: "feat: website name"
                            checkout main
                            merge denis id: "merge conflict" type: REVERSE
                            commit id: "chore: merge conflict resolved"
                    

Pull requesty se vytvářejí přímo na službě. Tyto pull requesty poté mohou ostatní členové komentovat, zamítnout či přijímout.

Gitové služby

Git řeší pouze verzování. Služby jako GitHub řeší věci okolo, včetně např. issues.

Issues

  • možnost vytvářet tickety
  • jeden ticket představuje jednu věc:
    • chybu, error, bug
    • nápad, něco co chybí
    • informace o projektu
  • jednotlivé issues lze komentovat, uzavřít je či označit tagy

Projekty

  • zobrazuje listy věcí (případně issues)
  • často rozděleno na tři části:
    • To do
    • In progress
    • Done

Akce

  • dovolují nám napsat vlastní programy
  • dané programy můžeme přímo na GitHub volat
  • můžou se např. volat i při pushnutí do repozitáře
  • např. vybuildění Vue a nahrání na FTP server

Git dokumentace / knížka

https://git-scm.com/book/cs/v2

Jak na projekty

  • používejte větve
  • držte si dobrý managment toho, kdo co dělá (issues)
  • každý pull-request nechte někoho zkontrolovat
  • používejte projekty

Děkuji za pozornost!

  • matej.cajthaml@ssps.cz
  • https://ssps.cajthaml.eu/