Git

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Přidán dotaz na vytvoření složky a --set-upstream.)
(.gitignore: Přidán postup pro odstranění ignorovaných souborů z remote.)
 
(Není zobrazeno 25 mezilehlých verzí od 1 uživatele.)
Řádka 1: Řádka 1:
[[Category:VSE]][[Category:Informatika]][[Category:Programování]][[Category:Softwarové inženýrství]]
+
[[Category:VSE]][[Category:Informatika]][[Category:Programování]][[Category:Softwarové inženýrství]][[Category:Git]][[Category:Řízení projektů]]
  
 
== Git ==
 
== Git ==
Řádka 9: Řádka 9:
 
* Typicky se využívá pro správu zdrojového kódu projektu, ale lze ji využít i k sledování verzí libovolného dokumentu.
 
* Typicky se využívá pro správu zdrojového kódu projektu, ale lze ji využít i k sledování verzí libovolného dokumentu.
  
=== Instalace ===
+
<div class="Poznamka">Tato stránka shrnuje základní příkazy a&nbsp;koncepty pro práci s&nbsp;Gitem. U&nbsp;každé akce je zároveň odkaz na stránku, kde si můžete přečíst podrobnější vysvětlení.</div>
 +
 
 +
== Ovládání a pojmy ==
 +
; Způsob ovládání
 +
* Git lze ovládat
 +
** z&nbsp;příkazového řádku,
 +
** bývá integrován do vývojových prostředí (IDE) &mdash; NetBeans, IntelliJ IDEA, Visual Studio Code, Visual Studio,...
 +
** existují také podpůrné nástroje pro práci v&nbsp;grafickém uživatelském prostředí.
 +
 
 +
; GitHub
 +
* GitHub je veřejný server, kde si můžete vytvořit repozitář a&nbsp;sdílet se spolupracovníky zdrojový kód svého projektu.
 +
* Váš Git umí stáhnout z&nbsp;GitHubu aktuální verzi a&nbsp;posléze nahrát zpět provedené změny.
 +
* Obdobných serverů existuje více (GitLab,...), GitHub patří k&nbsp;nejznámnějším.
 +
 
 +
== Instalace ==
 
* Git nainstalujete jako běžnou aplikaci ze stránek: [https://git-scm.com/downloads Git-scm.com]
 
* Git nainstalujete jako běžnou aplikaci ze stránek: [https://git-scm.com/downloads Git-scm.com]
 
* Doporučujeme zvolit si při instalaci vhodný textový editor pro psaní komentářů.
 
* Doporučujeme zvolit si při instalaci vhodný textový editor pro psaní komentářů.
 
*: Výchozí volbou je editor <code>vim</code>, známý z&nbsp;unixových systémů. Jeho ovládání ale pro většinu uživatelů Windows není příliš přívětivé &mdash; aspoň než si zvyknete.
 
*: Výchozí volbou je editor <code>vim</code>, známý z&nbsp;unixových systémů. Jeho ovládání ale pro většinu uživatelů Windows není příliš přívětivé &mdash; aspoň než si zvyknete.
 +
*: Dodatečně lze editor změnit:
 +
*: (Dosaďte cestu ke svému oblíbenému textovému editoru, zdvojte všechna zpětná lomítka &mdash; zde používáme Poznámkový blok)
 +
git config --system core.editor "C:\\WINDOWS\\system32\\notepad.exe"
 +
* Nastavte git:
 +
git config --global user.name "Jméno Příjmení"
 +
git config --global user.email "tvuj_email@gmail.com"
 +
git config --global core.autocrlf false
 +
* Více o&nbsp;instalaci a&nbsp;úvodní konfiguraci: [[Git: Instalace]].
  
=== Správa verzí lokálně ===
+
== Vytvoření repozitáře ==
* Git lze ovládat buď z&nbsp;příkazového řádku, bývá ale vestavěn ve většině programátorských vývojových prostředí (IDE) &mdash; například NetBeans, IntelliJ IDEA, Visual Studio,...
+
* Vytvořte si účet na serveru [https://www.github.com Github.com] (pokud už nemáte) a&nbsp;založte repozitář. (Můžete použít také jiný server.)
; Založení projektu
+
* Vygenerujte si klíč pro SSH přístup pomocí ''Git Bash'':
  git init
+
ssh-keygen -t rsa
; Zařazení aktuálních změn dokumentu do správy verzí
+
* Nahrajte veřejný klíč do svého účtu na [https://www.github.com Github.com]: ''Settings &rarr; SSH and GPG keys''
 +
 
 +
* Vytvoření lokální kopie vzdáleného repozitáře v&nbsp;aktuální složce:
 +
git clone ''git@github.com:''username''/''repository-name''
 +
* Více viz [[Git: Repository]].
 +
 
 +
== Správa verzí ==
 +
; Zjištění stavu lokálního repozitáře
 +
  git status
 +
; Zařazení aktuálních změn v&nbsp;projektu do snímku
 
  git add soubor
 
  git add soubor
 
  git add .
 
  git add .
* Zařadí všechny soubory v&nbsp;aktuálním adresáři.
+
git add -A
; Vytvoření verze dokumentu
+
; Vytvoření snímku
 
  git commit
 
  git commit
* Následně je třeba zapsat název aktuální verze a&nbsp;popis.
+
; Zobrazení historie
 +
git reflog
 +
git log
 +
* Ukonči klávesou ''Q''
 +
git log --oneline --decorate --graph
 +
; Odvolání změn z&nbsp;konkrétního snímku (commitu)
 +
git revert a99fcf9
  
 +
* Více viz [[Git: Versioning]].
  
 +
== Práce se vzdáleným repozitářem (GitHub) ==
 +
; Aktualizace lokálního repozitáře
 +
git pull
 +
* Stažení změn z&nbsp;repozitáře &mdash; změny mohli provést ostatní vývojáři
  
== GitHub ==
+
; Následně pracujte v&nbsp;lokální repozitáři
* GitHub je veřejný server, kde si můžete ukládat aktuální verze svého projektu.
+
  ...
* Váš Git umí stáhnout z&nbsp;GitHubu aktuální verzi a&nbsp;posléze nahrát zpět provedené změny.
+
* Obdobných serverů existuje více, GitHub patří k&nbsp;nejznámnějším.
+
 
+
=== Práce s repozitářem ===
+
; Vytvoření repozitáře
+
* Vytvořte si účet na serveru [https://www.github.com Github.com].
+
* Vytvořte repozitář.
+
 
+
; Připojení repozitáře
+
* Vytvořte složku, kterou chcete používat pro místní práci s&nbsp;repozitářem.
+
* Spusťte příkazový řádek (například <tt>Win+R</tt> &rarr; <code>cmd</code>).
+
* Přejděte vytvořené složky. Například pro složku <code>c:\users\student\Dokumenty\develop\project</code> napište:
+
c:
+
cd c:\users\student\Dokumenty\develop\project
+
* Vytvořte základní strukturu pro Git:
+
git init
+
* Připojte repozitář:
+
git pull https://github.com/username/repository-name
+
* Obsah repozitáře se stáhne do složky. Obsah se stáhne do větve <code>master</code>.
+
* Protože od října 2020 pojmenovává GitHub.com hlavní větev jako <code>main</code> v&nbsp;důsledku kampaně ''Black lives matter'', přejmenujte aktuální větev na <code>main</code>:
+
  git branch -m master main
+
: ''Jak souvisí pojmenování hlavní větve projektu s&nbsp;''Black lives matter''??? Slovem ''master'' museli černí otroci oslovovat své vlastníky.''
+
* Seznam aktuálně používaných větví si zobrazíte:
+
git branch
+
* Nastavte si výchozí repozitář pro nahrávání tak, abyste mohli posléze psát pouze <code>git push</code> a&nbsp;nemuseli uvádět cílový repozitář:
+
git push --set-upstream https://github.com/''vy''/''repozitar'' main
+
* Nyní můžete do složky nahrát požadované soubory a&nbsp;libovolně je upravit. Změny přidáte do gitu pomocí:
+
 
  git add .
 
  git add .
* Až jste s&nbsp;úpravami hotovi, zkontrolujte, jestli se obsah repozitáře mezitím nezměnil (mohli tam provést změny vaši kolegové):
 
git fetch
 
* Nyní změny potvrďte:
 
 
  git commit
 
  git commit
* Upravenou verzi nahrajete do repozitáře příkazem:
+
 
 +
; Odeslání změn z lokálního do vzdáleného repozitáře
 +
git pull
 
  git push
 
  git push
  
 +
* Více viz [[Git: Repository]].
  
=== Časté dotazy ===
+
== Větvení ==
; Jak vytvořím v&nbsp;repozitáři složku?
+
* Při opravě chyb nebo přidání nových funkcí musíte obvykle kód dočasně „rozbít“, když začnete zapracovávat požadované změny.
# Proveďte pull-request a&nbsp;vytvořte si kopii repozitáře ve složce na svém počítači.
+
* Pokud s&nbsp;repozitářem pracuje více lidí, je vhodné tyto změny vyřešit v&nbsp;samostatné větvi (branch).
# Nyní můžete běžně vytvořit podsložky a&nbsp;soubory dle potřeby.
+
* Ostatní tak mají kód stále k&nbsp;dispozici projekt v&nbsp;původní neporušené verzi.
# Proveďte ''fetch'', ''add'', ''commit'' a&nbsp;''push'', čímž změny nahrajete zpět do repozitáře.
+
* Pamatujte si: 1 změna = 1 větev.
  
 +
; Přehled větví
 +
git branch
  
== Markdown ==
+
; Vytvoření větve a&nbsp;přechod do ní
* Markdown je hypertextový značkovací jazyk.
+
git branch ''nazev_nove_vetve''
* Na rozdíl od HTML je určen k&nbsp;tomu, aby se dobře zapisoval na klávesnici a&nbsp;aby hyptertextové značky byly co nejúspornější.
+
git checkout ''nazev_nove_vetve''
* Je určen pro zápis textových dokumentů s&nbsp;formátováním, typicky takových, které půjdou zobrazit v&nbsp;podobě webové stránky.
+
  
=== Příklad dokumentu ===
+
; Odeslání změn z&nbsp;větve ''vetev_se_zmenami'' do větve ''main''
<div class="Priklad">
+
git checkout ''vetev_se_zmenami''
; Příklad dokumentu v&nbsp; Markdownu
+
git rebase -i ''HASH''
 +
git rebase --continue
 +
git checkout ''main''
 +
git pull
 +
git merge ''vetev_se_zmenami''
  
# Zadání projektu &mdash; Evidence docházky
+
* Více viz [[Git: Branch]]
 
+
## Úvod
+
 
+
Vytvoříme aplikaci pro evidenci docházky do kroužku.
+
 
+
Aplikace bude umět:
+
1. Vytvořit termín hodiny/schůzky/setkání.
+
2. Zobrazit seznam přihlášených do kroužku.
+
 
+
## Požadavky
+
 
+
Dále musí aplikace splňovat následující požadavky:
+
- Přístupnost kdekoli (tělocvična, třída).
+
    - Musí běžet i&nbsp;na mobilních zařízeních.
+
    - Požadavek dostupnosti Wi-Fi je akceptovatelný.
+
- Snadné ovládání pro člověka, který není zběhlý v&nbsp;IT.
+
</div>
+
  
=== Základy syntaxe ===
+
== .gitignore ==
* Nadpisy různých úrovní
+
* Pokud pracujete ve vývojovém prostředí (IDE), není vhodné ukládat do repozitáře veškerá nastavení nebo přeložené výsledky, které mohou být velké.
** Uvozujeme znakem mřížka (<code>#</code>).
+
* Do souboru <code>.gitignore</code> v&nbsp;repozitáři můžete zapsat soubory, které se budou při nahrávání do repozitáře ignorovat.
** Počet znaků mřížka udává úroveň nadpisu.
+
* Vzorové soubory <code>.gitignore</code> si lze nechat vygenerovat:
* Seznamy s&nbsp;odrážkami
+
** Jděte například na: [https://www.gitignore.io GitIgnore.io].
** Na začátku řádku uvedete pomlčku (<code>-</code>).
+
** Zadejte název vývojového prostředí, které používáte.
** Pro vnořené seznamy uveďte tabulátor a&nbsp;pak až pomlčku.
+
** Vygenerovaný text uložte do souboru <code>.gitignore</code> v&nbsp;kořenovém adresáři vašeho repozitáře s&nbsp;projektem.
* Číslované seznamy
+
* Odstranění ignorovaných souborů ze vzdáleného adresáře, pokud jste je předtím již nahráli (v&nbsp;příkazu odstraňujeme soubory ''Thumbs.db'' ze všech adresářů):
** První řádek začíná znaky jedničkou a&nbsp;tečkou (<code>1.</code>).
+
git rm --cached **/Thumbs.db
** Další body seznamu pak libovolným číslem, následovaným tečkou.
+
git add **/Thumbs.db
** Body v&nbsp;rámci jednoho seznamu se vždy přečíslují od jedničky dál.
+
git commit -m "Odstraněny ignorované soubory Thumbs.db"
 +
git push
  
=== Popis syntaxe podrobněji ===
+
== Markdown ==
* [https://www.markdownguide.org/basic-syntax/ Základní syntaxe (&rarr; MarkdownGuide.org)]
+
* Markdown je hypertextový značkovací jazyk, který se používá pro psaní dokumentace v&nbsp;Gitu.
 +
* Více na stránce [[Markdown]].
  
 +
== GitHub ==
 +
* Typy účtů na GitHubu
 +
** Osobní účet: zdarma, neomezený počet soukromých i&nbsp;veřejných repozitářů.
 +
** Firemní účet: administrátoři mohou spravovat oprávnění jednotlivých vývojářů k&nbsp;firemním projektům.
 +
** Enterprise účet: centrální správa několika organizací.
 +
* Lze pracovat s&nbsp;veřejným serverem, nebo lze vytvořit firemní server, na kterém budou repozitáře firmy a&nbps;který bude plně ve správě firmy.
  
 +
== Dotazy a&nbsp;problémy ==
 +
* Některé běžné dotazy a&nbsp;problémy jsou vysvětleny na stránce [[Git: FAQ]].
  
== Kurz na Learn2Code.cz ==
+
== Zdroje ==
* [https://www.learn2code.cz/kurzy/git-a-github Learn2Code.cz &rarr; Git a&nbsp;GitHub]
+
* Rychlý videokurz: [https://www.learn2code.cz/kurzy/git-a-github Learn2Code.cz &rarr; Git a&nbsp;GitHub]
 +
* Lokální práce s Gitem, analogie s fotoalbem: [https://www.freecodecamp.org/news/git-the-laymans-guide-to-understanding-the-core-concepts/ FreeCodeCamp.org &rarr; Git &mdash; Core concepts]

Aktuální verze z 12. 10. 2022, 06:03


Obsah

Git

Tato stránka shrnuje základní příkazy a koncepty pro práci s Gitem. U každé akce je zároveň odkaz na stránku, kde si můžete přečíst podrobnější vysvětlení.

Ovládání a pojmy

Způsob ovládání
GitHub

Instalace

git config --system core.editor "C:\\WINDOWS\\system32\\notepad.exe"
git config --global user.name "Jméno Příjmení"
git config --global user.email "tvuj_email@gmail.com"
git config --global core.autocrlf false

Vytvoření repozitáře

ssh-keygen -t rsa
git clone git@github.com:username/repository-name

Správa verzí

Zjištění stavu lokálního repozitáře
git status
Zařazení aktuálních změn v projektu do snímku
git add soubor
git add .
git add -A
Vytvoření snímku
git commit
Zobrazení historie
git reflog
git log
git log --oneline --decorate --graph
Odvolání změn z konkrétního snímku (commitu)
git revert a99fcf9

Práce se vzdáleným repozitářem (GitHub)

Aktualizace lokálního repozitáře
git pull
Následně pracujte v lokální repozitáři
...
git add .
git commit
Odeslání změn z lokálního do vzdáleného repozitáře
git pull
git push

Větvení

Přehled větví
git branch
Vytvoření větve a přechod do ní
git branch nazev_nove_vetve
git checkout nazev_nove_vetve
Odeslání změn z větve vetev_se_zmenami do větve main
git checkout vetev_se_zmenami
git rebase -i HASH
git rebase --continue
git checkout main
git pull
git merge vetev_se_zmenami

.gitignore

git rm --cached **/Thumbs.db
git add **/Thumbs.db
git commit -m "Odstraněny ignorované soubory Thumbs.db"
git push

Markdown

GitHub

Dotazy a problémy

Zdroje

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje