Pro GIT

Systém správy verzí (verzovací systém) Pro GIT (částečně přeloženo) 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řehled 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ření nového 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 file.txt (mezera mezi více soubory) z pracovního adresáře do pracovní oblasti
  • git add . – přidání všech souborů
  • (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 lokálního Git úložiště
  • git log - zobrazí přehled všech změn (jen komentáře)
    • git log --oneline --decorate
    • git log --oneline --decorate --graph --all
  • vrácení změn u požadovaného souboru:
    1. git log --oneline --decorate --graph --all – zjištění <commit hash>
    2. git checkout <commit hash> <file-name> – vrácení změn u souboru index.php do požadovaného bodu
    3. git commit -a
    4. git push
  • 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ů)
  • smazání všech lokálních změn a návrat projektu do stejného stavu jako je ve vzdáleném repozitáři:
    1. git fetch origin #aktualizace vzdáleného repozitáře
    2. git reset --hard origin/master

Větve:

  • git branch – zobrazení aktuální větve
  • git checkout -b new_branch – zkrácený zápis dvou níže uvedených příkazů:
    • git branch new_branch – vytvoření nové větve "new_branch"
    • git checkout new_branch – přepnutí se do větve "new_branch"
  • git diff new_branch master – náhled před spojením větví (new_branch – zdrojová větev, master -cílová větev)
  • spojení větve new_branch do hlavní větve master
    1. git checkout master – přepnutí se do větve master
    2. git merge new_branch – vloží všechny změny z větve "new_branch" do aktuální větve, obvykle "master" (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 (není podmínkou)
  • 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ě
  • git pull – aktualizace lokálního úložiště
    • git pull origin master – aktualizace konkrétní větve (origin – vzdálený repozitář, master – požadovaná větev)

Doporučený postup práce:

  1. Načtení změn ze vzdáleného úložiště do lokálního adresáře (fetch, pull).
  2. Vytvoření pracovní větve (checkout -b).
  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, pull) – pojistka proti konfliktům.
  5. Spojení pracovní větve do hlavní (merge).
  6. Odstranění pracovní větve (branch -d).
  7. 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 your@email.com
      • 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 gitlab.com
  Hostname gitlab.com
  Port 2211
  IdentityFile ~/.ssh/custom_id_rsa
  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ě)

  • gogs.io – české uživatelské prostředí
  • GitLab.org - neveřejný správce repozitářů zdarma
    • gitlab – wiki
    • gitlab – sign in
    • Command line instructions
      • Git global setup
        • git config --global user.name "My Name"
          git config --global user.email "my@email.com"
      • Create a new repository (from an existing)
        • git clone git@gitlab.com:repository-name/project-name.git
          cd project-name
          touch README.md
          git add README.md
          git commit -m "add README"
          git push -u origin master
      • Existing folder
        • cd existing_folder
          git init
          git remote add origin git@gitlab.com:repository-name/project-name.git
          git add .
          git commit -m "Initial commit"
          git push -u origin master
      • Existing Git repository
        • cd existing_repo
          git remote rename origin old-origin
          git remote add origin git@gitlab.com:repository-name/project-name.git
          git push -u origin --all
          git push -u origin --tags
  • GitHub.com – veřejný správce repozitářů zdarma
  • bitbucket.org

SSH

Vygenerování klíče:

ssh-keygen -t rsa -C "popis např. e-mail" -b 4096 -f filename

Test připojení:

ssh -T -i filename git@gitlab.com

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