GIT skrz naskrz Martin Havel

Slides:



Advertisements
Podobné prezentace
Pomůcka pro tvorbu prezentací závěrečné a diplomové práce
Advertisements

PowerDesigner 16.5 Ondřej Diviš.
HyperText Markup Language
Základy html pro úplné začátečníky.
HTTP server HTTP server 1 Jak to funguje?
Vytváření, použití dávkových souborů
Programujeme Google Gadgets Miroslav Slavík Copyright © Gug.cz, 2007 Gug.cz.
PHP – vkládání souborů a html 5
Operační systémy Windows, Linux a Mac OS X Přehled vývoje
Maturitní otázka č. 12 Kristýna Kaňovská 4. A.
Vzdělávací materiál / DUMVY_32_INOVACE_02B10 Příkazový řádek: úvod AutorIng. Petr Haman Období vytvořeníListopad 2012 Ročník / věková kategorie3. ročník.
Týmová spolupráce s využitím Google Code
Správa verzí Luboš Pavlíček.
4IT přednáška Správa verzí Luboš Pavlíček. 1. přednáška - správa verzí 2 Cíle správy verzí  centralizované místo, kde jsou uloženy různé verze.
Základy práce na PC Ing. Jan Roubíček.
PHP – zasílání dat z formuláře
Příkazový řádek CMD.
Skladba HTML dokumentu
PHP – Základy programování
Ing. Jan Mittner Základy MVC 2. Rozšíření layoutu 3. helpery 4. Bootstrap a přepis URL adres 2.
Maturitní okruh 22: Úvod do HTML. Značkovací a klasické jazyky Klasické: převládá strukturovaný text (programovací kód), skripty jsou prováděny na straně.
Střední škola služeb a podnikání, Ostrava-Poruba příspěvková organizace Výukový materiál v rámci projektu OPVK 1.5 Peníze středním školám Číslo projektu:
Výpočetní technika a algoritmizace I
S oftware – programové vybavení počítače. Operační systém. „Základní program“
Uživatelské profily, vlastnosti uživatelského účtu
T1: Základy práce s počítačem
Jazyk XML Jazyk pro tvorbu strukturovaných dokumentů Syntaxí velmi podobný HTML Hlavní cíle návrhu: Snadná editace - jazyk je textový Snadné strojové zpracování.
UNIX — doplňky Informatika pro ekonomy II přednáška 9.
Copyright (C) 2000 Vema, a. s.1 V3 klient Michal Máčel Provozní integrace G2, HR/Win a internetu.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
TNPW1 Technologie pro publikování na webu Cvičení č. 2 Překlad URL na fyzickou adresu stránky Editor Macromedia Homesite „Hello world“ v XHTML (úvod do.
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti 9. Politika systému Administrace OS Windows 1Miroslav Prágl.
2 Petr Žitný znalosti.vema.cz 3 Báze znalostí Nová služba zákazníkům ▸Báze naplněná informacemi, ke které mají uživatelé přímý přístup Základní cíl ▸Poskytovat.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
SAMBA umožňuje linuxovému systému sdílení prostředků a služeb prostřednictvím sítě používá SMB (server message block) protocol - identický protokolu.
Vzdálené počítačové sítě a programování v prostředí Windows Okruhy ke zkoušce z předmětu: Ing. Zdeněk Votruba LVALVA.
Klient ARL a IPAC pohled zpracovatele Nina Ramešová, Ústav informatiky AV ČR, v.v.i.
MS Excel 2 Martin Kotlík Brno, 20. ledna 2015 Obsah předchozího semináře 1 1.Popis programu Excel 2.Základní dovednosti 3.Typy vkládaných dat 4.Formát.
Tento vzdělávací materiál vznikl v rámci projektu EU – peníze školám Název projektu : Objevujeme svět kolem nás Reg. číslo projektu: CZ.1.07/1.4.00/
Vzdálená správa Tomáš Kalný.
Systém souborů. Množina souborů různých typů – Data – Spustitelné programy – Konfigurační a pomocné informace – I/O zařízení Způsob organizace množiny.
Operační systémy Windows, Linux a Mac OS X Přehled vývoje
Operační systém UNIX Příkazové prostředí UNIXu: příkaz [argumenty] [jméno] Ve jménech příkazů a parametrech se rozlišují malá a velká písmena.
Ivana Topolová VŠE v Praze
Microsoft Office Excel – práce s tabulkami a analýzy
Univerzita třetího věku kurz Pokročilý Tabulkový procesor 4.
Textový editor Maturitní téma č.12 (prostředí textového editoru, nastavení zobrazení dokumentu, zásady pořizování textu v počítači)
Vývoj informačních systémů Námět na praktické cvičení Klient – Server (nepovinné)
SOFTWARE I Operační software. BIOS Provádí testy hardwaru a jeho nastavení, konfiguraci celého počítače Provádí testy hardwaru a jeho nastavení, konfiguraci.
Výpočetní technika a algoritmizace I Základní příkazy příkazového řádku v systému Windows a unixových systémech.
Batové dávky Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Vojtěch Mrózek. Dostupné z Metodického portálu ISSN: ,
Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY.
HTML pokračování. Co obsahuje každý html dokument? stránka stránka ahoj světe HTML.
Redakční systém – Content management system (CMS), publikační systém – Správa obsahu webu – Jednoduché publikování textů – Modulárnost (instalace doplňků)
Přehled změn na portálu upgrade redakčního systému Marwel, nasazení modulu pro správu souborů a fulltextové vyhledávání
FTP-SSL FTP-SSL Martin Dušek Martin Fúsek Josef Vlček.
BEZPEČNOSTNÍ TECHNOLOGIE I Operační program Vzdělávání pro konkurenceschopnost Projekt: Vzdělávání pro bezpečnostní systém státu (reg. č.: CZ.1.01/2.2.00/ )
Instalace Javy ( pro Windows )
Úvod do Pythonu – IO operace se soubory.
Profesionální poštovní program mutt
Přehled změn na portálu
Přehled změn na portálu
Git Git je v informatice distribuovaný systém správy verzí vytvořený Linusem Torvaldsem pro vývoj jádra Linuxu.
Úvod do prostředí Upraveno pro verzi 2007
Základní příkazy OS UNIX (1)
NÁZEV ŠKOLY: Základní škola Josefa Bublíka, Bánov
Hostování vlastních NuGet balíčků
Command line nástroje Jednoúčelové, ale mocné nástroje pro transformace textu Jak získat: Linux (a Mac) – součást operačního systému Windows – musí se.
Azure DevOps Terraform QA FTW
GIT skrz naskrz Martin Havel
Transkript prezentace:

GIT skrz naskrz Martin Havel Software engineer, HAVIT, s.r.o. havel@havit.cz GIT skrz naskrz

Co nás dnes čeká? Co je to GIT Jak GIT ukládá data Ovládání GITu Základní příkazy GITu Pokročilejší techniky Řešení problémů Co se nevešlo

Kdo říká, že umí s gitem, tak kecá. Motto Kdo říká, že umí s gitem, tak kecá.

Co je to GIT?

git je populární verzovací systém https://insights.stackoverflow.com/survey/2018/

Co je to GIT? Systém správy verzí Vytvořený Linusem Torvaldsem pro vývoj jádra Linuxu Poté, co se rozešel s BitKeeper Vyvíjeno od roku 2005 dodnes Základní vlastnosti Rychlý Bezpečný Jednoduché větvení Jednoduché slučování

Ceník a rychlosti internetového připojení 2005 Převzato z http://www.bezdrat.net/cenik/wadsl/od-2005-04-01.html a https://www.finance.cz/zpravy/finance/54931-kolik-stoji-pripojeni-k-internetu/

Distribuovaný systém Main repository Local repository #1 Working copy Working copy

Distribuovaný systém Local repository #1 Local repository #2 Working copy Working copy

Distribuovaný systém Main repository Local repository #1 Working copy Working copy

Jak GIT ukládá data?

Interní ukládání 4 typy objektů Blob Tree Commit Tag Všechno má hash

Hash SHA1 1 461 501 637 330 902 918 203 684 832 716 283 019 655 932 542 976 možností Z roku 1995 vytváří otisk dlouhý 160 bitů, 40 hexadecimálních čísel či 40 znaků (0 - 9 a a - f) Došlo k prolomení 1. řádu

Typy dat Tag Commit Tree Blob 97818f6 tag2 3962708 650987b 270017e 100644 blob 1b03b7c git-add.txt 100644 blob 3962708 git-commit.txt tag2 3962708 usage: git commit [<options>]… 650987b 270017e 040000 tree 97818f6 BasicCommands 040000 tree caba56b RemoteCommads 2354dad object 650987b type commit tag tag2 tagger Havel… message for tag2 tree 270017e parent e54638d author Havel… committer Havel… Correct commit 3814376 usage: git pull [<options>]… caba56b 100644 blob 3814376 git-pull.txt 100644 blob 6cd48f1 git-push.txt 6cd48f1 usage: git push [<options>]… e54638d tree f234ad6 author Havel… committer Havel… First commit f234ad6 040000 tree 7e440e7 BasicCommands 040000 tree caba56b RemoteCommads tag1 1b03b7c usage: git add [<options>]… 7e440e7 100644 blob 1b03b7c git-add.txt 100644 blob 1b03b7c git-commit.txt * Všechny SHA-1 byly zkráceny

Reference HEAD – stav workspace master (<branch>) – hlavní větev origin/master (<remote>/<branch>) – vzdálená větev Kromě HEAD jsou to všechno jen konvence

Ovládání GITu

Bohatá dokumentace „Man“ pages (git help <příkaz>) Stručný návod (git <příkaz> -h) Návody na https://git-scm.com v češtině! (díky CZ.NIC) Návodné texty u příkazů Hledat „git-příkaz“ https://ndpsoftware.com/git-cheatsheet.html https://marklodato.github.io/visual-git-guide/index-en.html

Struktura příkazů Citace https://git-scm.com/docs/git: „git - the stupid content tracker“ Low-level commands (plumbing) High-level commands (porcelain) Tooling

Struktura příkazů Citace https://git-scm.com/docs/git: „git - the stupid content tracker“ Low-level commands (plumbing) High-level commands (porcelain) Tooling

Ovládání GITu Příkazová řádka nebo UI Je GIT case sensitive? Něco ano, něco ne. Na čem to záleží? Na operačním (souborovém) systému. Třeba na Windows GIT add projde, git ADD už ne. Takže nejlepší je ho brát jako case sensitive.

Parametry příkazů Buď nebo lze také zadat ale ne Proč? git commit --all --message "text commitu" nebo git commit -a -m "text commitu" lze také zadat git commit -am "text commitu" ale ne git commit -ma "text commitu" Proč?

Úvodní nastavení git config [--global] user.name "Martin Havel" git config [--global] user.email havel@havit.cz Obsah souboru .gitconfig [user] name = Havel, Martin email = havel@havit.cz Editor je nastavený VIM

Základní příkazy

Další nastavení git config --global core.editor notepad git config --global alias.logf "git log --oneline --graph" set LC_ALL=C.UTF-8 .gitignore Editor je nastavený VIM

Inicializace lokálního repozitáře Inicializace prázdného repozitáře git init Napojení na vzdálený server git clone <url> Napojení exitujícího repozitáře git remote add <shortname> <url>

status [<složka>] log stash workspace Stage index Local repository Remote repository stash list status [<složka>] log commit –a * add commit push stash pop pull stash apply <s> checkout HEAD fetch checkout reset HEAD stash reset (--hard | --merge) diff diff --staged diff (HEAD | <složka>)

Poznámky Přejmenování se projeví až při vložení do stage Větve se obnovují do stejného adresáře Pull standardně provádí merge (lze přenastavit) GIT pracuje po řádcích

git tag Přidání tagu Smazání tagu Zobrazení seznamu tagů git tag <tagname> - jednoduchý tag git tag -a -m <message> <tagname> - anotovaný tag Smazání tagu git tag -d <tagname> Zobrazení seznamu tagů git tag -l

Pokročilejší techniky

Větvení Vytvoření větve (název musí být bez mezer) Alternativa git branch <větev> git checkout <větev> Alternativa git checkout -b <větev> Commit jako obvykle Smazání git branch –d <větev>

git merge (výchozí stav) Převzato z https://git-scm.com/book

git merge (průběh) Převzato z https://git-scm.com/book

git merge (konečný stav) Převzato z https://git-scm.com/book

Další příklad git merge Převzato z https://git-scm.com/book

git merge --ff (fast-forward) Převzato z https://git-scm.com/book

git merge --no-ff (no fast-forward) Převzato z https://git-scm.com/book

git merge vs rebase Převzato z https://git-scm.com/book

git merge vs rebase merge rebase Převzato z https://git-scm.com/book

git rebase x git merge x git cherry-pick Interactive demo https://learngitbranching.js.org

adresace komitů Absolutně Relativně Identifikátory (SHA1) reference tagy Relativně kommity nadřazené absolutnímu

Rozdíl mezi ~ a ^ HEAD~2 HEAD^[1]^[1] HEAD^^2 HEAD^2^[1] HEAD~1

git add - -patch Vybírá se, jaká část souboru se vloží do stashe

Další pokročilé techniky Řešení problémů

git commit - -amend Přepíše poslední komit Nedá se odebrat soubor Mění se popis Přidává se, nebo mění soubor Nedá se odebrat soubor

git reset x git checkout x git revert Vrátí zpět referenci Checkout Přesune HEAD Revert Vytvoří opačný komit

git rebase interactive Slučování komitů Rozdělování komitů Přehazování pořadí Změna popisu Úpravu komitů

Detached HEAD Změní se příkazem A vrátíme se příkazem git checkout <komit> A vrátíme se příkazem git checkout [master|HEAD|<branch>]

Vyřešení konfliktů Ručně Nástrojem Upravit soubor Přijmout příkazem add git nehlídá obsah souboru Nástrojem

git mergetool git mergetool git mergetool --tool-help git mergetool --tool=p4merge

git clean git clean f force d remove whole directories x remove ignored files, too

Čestná zmínka

git blame [-M|-C] Kdo změnil (přesunul/zkopíroval) jaký řádek C – dohledává zkopírované řádky M – dohledává přesunuté řádky

Submodules Přidání submodulu git submodule add <repository> Inicializace submodulu (potřebná před aktualizací) git submodule init Aktualizace submodulu git submodule update

git bisect Hledání chyby metodou půlení intervalu

git rerere Reuse recorded resolution of conflicted merges

git filter-branch Švýcarský nůž Ohromně mocný Ohromně nebezpečný Příklady git filter-branch --tree-filter 'rm <filename>' HEAD git filter-branch -f --msg-filter "sed 's/^git-tfs-id:.*;C\([0-9]*\)$/Changeset:\1/g'" -- --all

Pull request Práce se odešle ke schválení Po schválení se integruje do vývojové větve

Podepisování komitů Komity se dají podepisovat Návod najdete na internetu 

A to je konec. Nějaké dotazy?