Git: Versioning
Z MiS
				
				
				(Rozdíly mezi verzemi)
				
																
				
				
								
				|  (Doplnění pojmu ''snímek''.) |  (Přidány příkazy revert, reset, reflog, log,...) | ||
| Řádka 6: | Řádka 6: | ||
| * Zde se budeme zabývat vytvářením jednotlivých verzí a jejich správou na lokálním počítači. | * Zde se budeme zabývat vytvářením jednotlivých verzí a jejich správou na lokálním počítači. | ||
| * Určitě si také budete chtít přečíst materiál o vytváření vzdálených repozitářů: [[Git: Repository]]. | * Určitě si také budete chtít přečíst materiál o vytváření vzdálených repozitářů: [[Git: Repository]]. | ||
| − | |||
| == Správa verzí == | == Správa verzí == | ||
| Řádka 12: | Řádka 11: | ||
| * V tomto dokumentu si ukážeme příkazy, které můžete použít nezávisle na vývojovém prostředí. | * V tomto dokumentu si ukážeme příkazy, které můžete použít nezávisle na vývojovém prostředí. | ||
| * Můžete je klidně použít pro správu verzí u dokumentů ve Wordu či Excelu či pro jakékoli jiné dokumenty. Nejlepší výsledky ale získáte při použití s textovými dokumenty, kde umí Git detailně sledovat změny. | * Můžete je klidně použít pro správu verzí u dokumentů ve Wordu či Excelu či pro jakékoli jiné dokumenty. Nejlepší výsledky ale získáte při použití s textovými dokumenty, kde umí Git detailně sledovat změny. | ||
| − | |||
| == Historie projektu, snímky == | == Historie projektu, snímky == | ||
| Řádka 19: | Řádka 17: | ||
| * Každou ucelenou sadu změn, která náš systém o něco vylepší, bychom tedy měli zakončit vytvořením snímků. | * Každou ucelenou sadu změn, která náš systém o něco vylepší, bychom tedy měli zakončit vytvořením snímků. | ||
| * Zároveň je důležité u každého snímku popsat, jaké změny řešil a co se změnilo, případně na jaký problém (''issue'') reaguje. | * Zároveň je důležité u každého snímku popsat, jaké změny řešil a co se změnilo, případně na jaký problém (''issue'') reaguje. | ||
| − | + | * Každý snímek má vždy zobrazen i identifikační kód (hash). | |
| + | * Na jednotlivé snímky se můžete pomocí tohoto kódu odkazovat. | ||
| == Založení projektu == | == Založení projektu == | ||
| Řádka 30: | Řádka 29: | ||
|   git init |   git init | ||
| * Git si v aktuální složce vytvoří podsložku <code>.git</code>, ve které si bude ukládat informace o jednotlivých verzích dokumentu. | * Git si v aktuální složce vytvoří podsložku <code>.git</code>, ve které si bude ukládat informace o jednotlivých verzích dokumentu. | ||
| − | |||
| == Zařazení aktuálních změn do nového snímku == | == Zařazení aktuálních změn do nového snímku == | ||
| + |  git status | ||
| + | * Zobrazí, které soubory byly změněny od posledního snímku (''commitu'') — které soubory jsou tzv. ''unstaged''. | ||
| + | |||
|   git add ''soubor'' |   git add ''soubor'' | ||
| * Zařadí do příštího snímku jeden změněný soubor. | * Zařadí do příštího snímku jeden změněný soubor. | ||
| Řádka 39: | Řádka 40: | ||
|   git add . |   git add . | ||
| * Zařadí do nové verze všechny soubory v aktuálním adresáři. | * Zařadí do nové verze všechny soubory v aktuálním adresáři. | ||
| − | |||
| == Vytvoření snímku projektu == | == Vytvoření snímku projektu == | ||
|   git commit |   git commit | ||
| * Následně je třeba zapsat název aktuálního snímku a popis změn, které jsme provedli. | * Následně je třeba zapsat název aktuálního snímku a popis změn, které jsme provedli. | ||
| + | * Otevře se nám nastavený textový editor. | ||
| + | * První řádek je nadpis, další řádky jsou popis. | ||
| + | * Nepoužívejte diakritiku! Nebo rovnou pište v angličtině. ;) | ||
| + | * Uložte soubor a zavřete editor. | ||
|   git commit -M "''Nazev verze bez diakritiky''" |   git commit -M "''Nazev verze bez diakritiky''" | ||
| Řádka 49: | Řádka 53: | ||
| * Důsledně to ale zvažte a zvykněte si spíš na podrobnější popis. | * Důsledně to ale zvažte a zvykněte si spíš na podrobnější popis. | ||
| * Pro některé firmy je použítí <code>-M</code> považováno za porušení pravidel. | * Pro některé firmy je použítí <code>-M</code> považováno za porušení pravidel. | ||
| + | |||
| + | == Zobrazení historie == | ||
| + | * Každý snímek má vždy zobrazen i identifikační kód (hash). | ||
| + | * Na jednotlivé snímky se můžete pomocí tohoto kódu odkazovat. | ||
| + | |||
| + |  git log | ||
| + | * Zobrazí seznam změn. | ||
| + | * Ve výpisu můžete listovat šipkami. | ||
| + | * Výpis ukončíte klávesou ''Q''. | ||
| + | |||
| + |  git log --oneline --decorate --graph | ||
| + | * <code>--oneline</code>... zobrazí u každého snímku jen nadpis. | ||
| + | * <code>--graph</code>... pokud máte více větví, zobrazí „graficky“ návaznost větví. | ||
| + | |||
| + |  git reflog | ||
| + | * Zobrazuje data z logu odkazů. | ||
| + | * Kde je právě ukazatel <code>HEAD</code>. | ||
| + | * Můžeme zobrazit posloupnost odvolaných snímků. | ||
| + | |||
| + | == Návrat k poslednímu snímku == | ||
| + |  git reset | ||
| + | * Budou zrušeny všechny změny od posledního snímku (''commitu''); | ||
| + | |||
| + | == Odvolání změn == | ||
| + |  git revert ''a99fcf9'' | ||
| + | * Zruší změny, které byly provedeny ve snímku (''commitu'') s  ID <code>a99fcf9</code>. | ||
| + | * Změny z navazujících ''commitů'' zůstanou platné, zruší se POUZE změny provedené v tomto jednom ''commitu''. | ||
| + | * Vytvoří se nový commit, kde můžete vysvětlit, proč změny odstraňujete. | ||
| + | * I tento ''revert-commit'' lze později odvolat. | ||
| + | |||
| + |  git revert ''a99fcf9''..''2ef9baa'' | ||
| + | * Zruší změny, které byly provedeny v daném rozsahu snímků (včetně obou uvedených). | ||
| + | * Vytvoří se nový commit, kde můžete vysvětlit, proč změny odstraňujete. | ||
| == Související stránky == | == Související stránky == | ||
| * [[Git]], [[Git: Repository]] | * [[Git]], [[Git: Repository]] | ||
Verze z 27. 11. 2020, 09:40
| Obsah | 
Git
- Git je jedním z nejoblíbenějších verzovacích systémů současnosti.
- Více o Gitu se dozvíte na stránce Git.
- Zde se budeme zabývat vytvářením jednotlivých verzí a jejich správou na lokálním počítači.
- Určitě si také budete chtít přečíst materiál o vytváření vzdálených repozitářů: Git: Repository.
Správa verzí
- Git lze ovládat buď z příkazového řádku, bývá ale vestavěn ve většině programátorských vývojových prostředí (IDE) — například NetBeans, IntelliJ IDEA, Visual Studio,...
- V tomto dokumentu si ukážeme příkazy, které můžete použít nezávisle na vývojovém prostředí.
- Můžete je klidně použít pro správu verzí u dokumentů ve Wordu či Excelu či pro jakékoli jiné dokumenty. Nejlepší výsledky ale získáte při použití s textovými dokumenty, kde umí Git detailně sledovat změny.
Historie projektu, snímky
- Můžeme si představit, že Git historii vývoje projektu sleduje jako posloupnost jednotlivých snímků.
-  Snímky vytváříme příkazem git commita k vytvořenému snímku se můžeme kdykoli vrátit.
- Každou ucelenou sadu změn, která náš systém o něco vylepší, bychom tedy měli zakončit vytvořením snímků.
- Zároveň je důležité u každého snímku popsat, jaké změny řešil a co se změnilo, případně na jaký problém (issue) reaguje.
- Každý snímek má vždy zobrazen i identifikační kód (hash).
- Na jednotlivé snímky se můžete pomocí tohoto kódu odkazovat.
Založení projektu
- Přesuňte se do složky, ve které bude umístěn váš projekt. V příkazovém řádku Windows můžete použít:
rem Zvolte diskovou jednotku, na které je váš projekt c: rem Přesuňte se do adresáře s projektem. Například: cd c:\Users\xyz\Documents\Develop\MujProjekt
- Následně v příkazovém řádku zapište
git init
-  Git si v aktuální složce vytvoří podsložku .git, ve které si bude ukládat informace o jednotlivých verzích dokumentu.
Zařazení aktuálních změn do nového snímku
git status
- Zobrazí, které soubory byly změněny od posledního snímku (commitu) — které soubory jsou tzv. unstaged.
git add soubor
- Zařadí do příštího snímku jeden změněný soubor.
- Můžeme totiž někdy provádět změny, které jsou jen dočasné a do dalšího snímku je umístit nechceme. (Například vložení testovacích výpisů do aplikace.)
git add .
- Zařadí do nové verze všechny soubory v aktuálním adresáři.
Vytvoření snímku projektu
git commit
- Následně je třeba zapsat název aktuálního snímku a popis změn, které jsme provedli.
- Otevře se nám nastavený textový editor.
- První řádek je nadpis, další řádky jsou popis.
- Nepoužívejte diakritiku! Nebo rovnou pište v angličtině. ;)
- Uložte soubor a zavřete editor.
git commit -M "Nazev verze bez diakritiky"
- Pro jednoduché projekty lze využít tuto zkrácenou syntaxi.
- Důsledně to ale zvažte a zvykněte si spíš na podrobnější popis.
-  Pro některé firmy je použítí -Mpovažováno za porušení pravidel.
Zobrazení historie
- Každý snímek má vždy zobrazen i identifikační kód (hash).
- Na jednotlivé snímky se můžete pomocí tohoto kódu odkazovat.
git log
- Zobrazí seznam změn.
- Ve výpisu můžete listovat šipkami.
- Výpis ukončíte klávesou Q.
git log --oneline --decorate --graph
-  --oneline... zobrazí u každého snímku jen nadpis.
-  --graph... pokud máte více větví, zobrazí „graficky“ návaznost větví.
git reflog
- Zobrazuje data z logu odkazů.
-  Kde je právě ukazatel HEAD.
- Můžeme zobrazit posloupnost odvolaných snímků.
Návrat k poslednímu snímku
git reset
- Budou zrušeny všechny změny od posledního snímku (commitu);
Odvolání změn
git revert a99fcf9
-  Zruší změny, které byly provedeny ve snímku (commitu) s  ID a99fcf9.
- Změny z navazujících commitů zůstanou platné, zruší se POUZE změny provedené v tomto jednom commitu.
- Vytvoří se nový commit, kde můžete vysvětlit, proč změny odstraňujete.
- I tento revert-commit lze později odvolat.
git revert a99fcf9..2ef9baa
- Zruší změny, které byly provedeny v daném rozsahu snímků (včetně obou uvedených).
- Vytvoří se nový commit, kde můžete vysvětlit, proč změny odstraňujete.
