Pro GIT

Systém správy verzí (verzovací systém) Pro GIT je základním nástrojem vývojářů (nejen) open source softwaru.

Názvosloví:

  1. Working directory – vytváření, mazání a změny souborů
  2. Staging area – přehledem změn
  3. Repository – úložiště změn

Pracovní postup se skládá z editace souborů v pracovním adresáři, přidávání souborů do pracovní oblasti a z uložení změn do Git úložiště pomocí tzv. "commit"ů.

Popis příkazů:

  • git init – vytvoří nové Git úložiště (repozitář)
  • git status – kontrola souborů v pracovním adresáři a pracovní oblasti
  • git add file.txt - přidání souboru (mezera mezi více soubory) z pracovního adresáře do pracovní oblasti
  • (git rm file.txt – smazání souboru z pracovního adresáře a pracovní oblasti)
  • git diff - zobrazení změn mezi pracovním adresářem a pracovní oblastí
  • git commit -m "popis" - trvalé uložení změn z pracovní oblasti do Git úložiště
  • git log - zobrazí přehled všech změn (jen komentáře)
  • git show HEAD – zobrazí přehled všech změn (HEAD je poslední commit)
  • git checkout HEAD file.txt – obnoví soubor file.txt v pracovním adresáři z pracovní oblasti
  • git reset HEAD file.txt – odebere soubor file.txt z pracovní oblasti (v pracovním adresáři zůstane) před uložením změn do Git úložiště
  • git reset 6abf3e7 – odstraní z Git úložiště všechny změny od uvedeného SHA (stačí uvést prvních 7 znaků)

Větve:

  • git branch – zobrazení aktuální větve
  • git branch new_branch – vytvoření nové větve "new_branch"
  • git checkout new_branch – přepnutí se do větve "new_branch"
  • git merge new_branch – vloží všechny změny z větve "new_branch" do aktuální větve (případný konflikt je v souboru vyznačen a je třeba jej ručně vyřešit a smazat i gitem vložené označení)
  • git branch -d new_branch – smazání větve "new_branch"

Úložiště (repozitář):

  • master – název hlavní větve
  • origin – název vzdálené větve
  • git clone... – vytvoření klonu repozitáře
  • git remote -v – zobrazí seznam Git projektů
  • git fetch – kontrola aktuálnosti lokální kopie oproti vzdálenému úložišti
  • git merge origin/master – sloučení vzdálené větve "origin/master" do aktuální lokální větve
  • git push origin new_branch – uloží větev "new_branch" do vzdáleného úložiště

Doporučený postup práce:

  1. Načtení změn ze vzdáleného úložiště do lokálního adresáře (fetch, merge).
  2. Vytvoření pracovní větve (branch).
  3. Provést požadované úpravy a změny uložit lokálně (commit).
  4. Opětovné načtení změn ze vzdáleného úložiště do lokálního adresáře (fetch, merge) – pojistka proti konfliktům.
  5. Uložit změny do vzdáleného repozitáře (push).

Tipy:

  • sourcetreeapp.com – aplikace pro vizuální zobrazení větvení
  • Mercurial
  • github.com/git-tips/tips

Instalace:

  • Mac
    • nainstalujte git-osx-installer
    • nastavte základní údaje
    • git config --global user.name "Your Name"
      git config --global user.email [email protected]
      • nastavené údaje je možné modifikovat v ~/.gitconfig (v domovském adresáři svého účtu)

Založení repozitáře na serveru:

  • přihlášení, vytvoření adresáře, přechod do adresáře, tvorba repozitáře, nasdílení, vytvoření popisu repozitáře
  • ssh git
    mkdir themes/[theme-name].git
    cd themes/[theme-name].git
    git --bare init
    git init --bare --shared
    echo 'Theme description' > description
  • Vytvoření repozitáře ve složce u sebe na lokale a první commit na server
  • cd workspace/[theme-name]
    git init
    git add .
    git commit -m 'Initial GIT version'
    git remote add origin git:themes/[theme-name].git
    git push origin master

Základní příkazy:

git pull
git commit -m 'komentář změny (konvence: používat přítomný čas do 50 znaků)'
git status
git push
git svn dcommit

Porovnání změn (klávesa q ukončí zobrazení diff režimu):

git diff filename.txt

Zobrazení historie změn:

git log

V .ssh/config je vhodné definovat požadované připojení např.:

Host git
  Hostname 74.125.232.211
  Port 2211
  User git

Vytvoření klonu z repozitáře do aktuálního adresáře (se zachováním původního názvu):

cd ~/workspace
mkdir myproject
cd myproject
git clone git:repos/test.git
git status

Vytvoření klonu z repozitáře do adresáře test (dojde k přejmenování na test):

git clone git:repos/test.git test

Soubor .gitignore

  • .DS_Store
    .sass-cache
    /.esproj/
    /.dropbox
    /TestFolder
    *.espressostorage

"Správný" popisek (commit message)

Git dělí popisky na jednořádkové shrnutívolitelné detaily, které mohou mít libovolný počet řádků. Obě části jsou oddělené prázdným řádkem.

  • shrnutí: 50–60 znaků
  • prázdný řádek
  • detaily: zalamovat po 72 znacích, vhodné je používat i odkazy na externí zdroje např. evidenci chyb (issue tracker)

Repozitáře (úložiště)

Aplikace opravy (patch)

Pomocí wget:

$ wget -q -O - http://drupal.org/files/[patch-name].patch | git apply -

nebo pomocí curl:

$ curl http://drupal.org/files/[patch-name].patch | git apply -
PřílohaVelikost
scott-chacon-pro-git-cz.pdf5.62 MB