====== git prirucka======
toto je martinův zápis (+honza doplnění, honza ještě neověřil na windows!!!)
16.5.2014 pod mým vedením založil git [[github>ibassci/kalkulacka|github projekt kalkulacka]]
* honza je starý unixák (od října 1991), martin provozuje win81
* z [[http://git-scm.org]] stažen git software pro windows:
* Git bash -- "unixová" konsole
* Git GUI, spouští se ''git gui''
* ''gitk --all'' browser/viewer větví
honza také lehce provozuje Windows (qůli Lispworks a micro-graphics knihovně je to nutné)
a silně doporučuje/používá pro instalaci sw na windows:
[[https://code.google.com/p/windows-package-manager/|npackd]]
====== přehled základních unix/bash prikazu ======
[[man>bash(1)]] [[die.net>1/bash]] tzv "příkazový řádek", postrach, shell, REPL unixu
=====pwd=====
**p**rint **w**orking **d**irectory (aktualni pozice v adresari),
adresář/cesta/path vůči [[#HOME]] (nebo ~ vlnovka/tilda) je zpravidla
také součástí
=====cd=====
**c**hange **d**irectory
<code bash>
cd ../.. #vyleze o dv adresáře "nahoru", směrem ke kořeni
cd #vleze do $HOME, ~ domovského adresáře, zpravidla /C/Users/honza
cd . #vlastně neudělá "nic"
cd .. #do nadřízeného
cd ../.. #do nadřízeného nadřízeného
cd podadresar
cd pod/adre/sar
cd Desktop/PROG2 #vleze do slozky PROG2
#TIP napsat zacatek a Tab to dopise
#TIP fungují šipky nahoru/dolů po historii příkazů, staré příkazy lze editovat
#POZN vlnka ~ znamena hlavni slozka uzivatele
</code>
=====ls=====
vypise obsah slozky/adresáře [[man>ls(1)]]
<code bash>
ls
ls -l #plný/podrobný výpis
</code>
=====mkdir=====
vytvoří adresář [[man>mkdir(1)]]
<code bash>
mkdir novy-adresar
mkdir -p nekolik/novych/adresaru/a_podadresaru
#POZN: nevkladejde znak mezera do jmen adresaru a souboru (jde to, ale je to zdrojem problemu)
#POZN: také nepouzivejte znak '/' (lomítko) a '\' zpětné
</code>
=====rmdir=====
[[man>rmdir(1)]]vymaze adresar -- musí být prázdný
=====du=====
vypise obsah aktualni slozky [[man>du(1)]] [[die.net>1/du]], resp. velikosti obsahu adresaru,
lze "zneužít" v výpisu struktury -- to lze i pomocí [[man>tree(1)]]
=====cp=====
kopírovaní souborů [[man>cp(1)]] [[die.net>1/cp]]
<code bash>
cp odkud/soubor kam-adresar
cp soubor kam-adresar/jine-jmeno
cp -r adr adr2 #rekurzivni kopie
</code>
=====mv=====
presun nebo prejmenování souborů/adresářů [[man>mv(1)]] [[die.net>1/mv]]
=====globing=====
wildcard/žolíky/zástupné znaky pro jména souborů/adresářů -- expanduje shell/bash
* '*' libovolný pocet libovolných znaků
* '?' jeden libovolný znak
* [ch] výčet znaků
* [0-9] výčet znaků
* \ escape, ruší význam spec. znaků
<code bash>
ls -l *.c #soubory končící .c
ls -l .* #soubory začínající . tečkou -- normálně je ls nevypisuje
ls -l *.[ch] #soubory končíci .c a .h
ls -l [0-9]* #soubory začinající číslicí
ls -l \*.c #soubor se opravdu jmenuje "*.c"
</code>
=====vi=====
Oblíbený/proklínaný unix editor [[http://www.vim.org]] [[man>vi(1)]]
* [[http://www.nti.tul.cz/~satrapa/docs/vim/|Satrapovy stránky]]
* [[vimref]]
* [[http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html|cheatsheet]]
====== ibassci/kalkulacka======
Jak jsme založili tento projekt
=====github=====
Na [[http://github.com]] se založil nový účet (username/heslo)
a založil se nový projekt [[github>ibassci/kalkulacka]] (zaškrnout README.md plus .gitignore)
tento projekt je
[[http://ndpsoftware.com/git-cheatsheet.html#loc=remote_repo;|vzdálený repozitar]]
[[http://ndpsoftware.com/git-cheatsheet.html#loc=remote_repo;|git cheatsheet]] je vyborná věc!!!
Nyní potřebujeme vytvořit //lokální repozitář//
a [[http://ndpsoftware.com/git-cheatsheet.html#loc=workspace;|pracovní adresář]]
<code bash>
#projekty (git-repozitare) z github si umístíme do adresářů ~/Desktop/github/<projekt>
mkdir ~/Desktop/github
cd ~/Desktop/github
#naklonujeme repozitar
#https://.... je URL pro repo, lze kopírovat do clipboardu na github stránce projektu
git clone https://github.com/ibassci/kalkulacka.git
#vytvoří se adresář kalkulacka, který obsahuje (prázdný projekt):
cd kalkulacka
ls -l README.md #README projektu
ls -l .gitignore #soubor se vzory ignorovanych souboru
du .git #skrytý adresář obsahující lokalní repozitar
#zkopirujeme/presuneme do workspace existujici soubory
cp ../../PROG2/struktury/kalkulacka.c
cp ../../PROG2/struktury/neco.dev #projekt soubor pro Dev C++ IDE
cp ../../PROG2/struktury/neco.cbp #projekt soubor pro Code::blocks IDE
</code>
=====git config=====
Nakonfigurujeme globalně (pro uživatele) git
<code bash>
git config --global user.email tomas.marny@bleble.cz
git config --global user.name Tomas Marny
</code>
lze nakonfigurovat editor, ktery se pouzije pri zapisu //commit message//,
jinak se použije [[vimref|vim]]
<code bash>
git config --global core.editor notepad
</code>
=====git status=====
vypise stav workspace vůči indexu vůči repozitáři...
=====git add=====
prida tyto soubory do
[[http://ndpsoftware.com/git-cheatsheet.html#loc=index;|indexu/stage]]
* pokud se jedná o nový soubor, bude //track//ován
* pokud je jedná již o //track//ovaný, přidá se jeho nový obsah
//index///stage představuje obsah budoucího //commit//u, //changeset//
<code bash>
git add kalkulacka.c kalkulacka.dev #pridame 2 nové soubory
git status
</code>
=====git commit=====
zapíše obsah //index//u jako nový //commit//, toto nepracuje se serverem!
* vyvolá se **code.editor** a je nutne vyplnit //commit message//
<code bash>
git commit #vyplnit hlaseni
git status
gitk --all #nový commit, 'bod' na větvi master, nový 'bod' historie
</code>
=====git push=====
přenese obsah lokální-repo na vzdálený (github) repo
* nutno zadat user/password pro github ucet
* místo https: url lze používat **ssh** a private/public key
Teprve zveřejněním na github/vzdáleném repo mohou spolupracovat ostatní
=====git software=====
Místo **git** příkazů na příkazové řádce lze používat:
* git gui
* různé grafické klienty -- http://git-scm.org
* .NET aplikaci http://windows.github.com
* znakový klient [[github>jonas/tig]]
* existuje GIT podpora pro IDE: Visual Studio 2013, Eclipse, [[github>tpope/vim-fugitive|vim plugin]]