Git

Z GeoWikiCZ

When I say I hate CVS with a passion, I have to also say that if there any SVN users (Subversion users) in the audience, you might want to leave. Because my hatred of CVS has meant that I see Subversion as being the most pointless project ever started, because the whole slogan for the Subversion for a while was 'CVS done right' or something like that.
--- Linus Torvalds

Git je distribuovaný systém pro správu verzí (software pro správu zdrojových kódů projektů). Git byl původně vytvořen Linusem Torvaldsem pro vývoj jádra Linux, dnes je spravován Junion Hamanem. Git je svobodný softare šířený pod GPL licencí verze 2.

Odkazy

Poznámky

Instalace

apt-get install git-core

Další doplňující balíčky jsou git-cvs, git-daemon-run, git-gui, gitk a gitweb.

Vytvoření repozitáře

Nový prázdný git repozitář vytvoří příkaz

$ git-init-db

Git repozitář můžeme vytvořit pro existující projekt, například

$ cd /cesta/k/mému/projektu
$ git-init-db     (1)
$ git-add .       (2)

kde (1) vytvoří /cesta/k/mému/projektu/.git adresář a (2) přidá do projektu všechny existující soubory z běžného adresáře (symbol tečka).

Git může být takto používán i pro lokální projekty na kterých pracuje jediný uživatel.

Naklonování repozitáře

Repozitář, který máme přístupný přes ssh naklonujem příkazem git clone, například

git clone  gin@josef.fsv.cvut.cz:/home2/gin/git  [ adresář ]

Správa větví

Jeden git repozitář může udržovat více vývojových větví (branches). Pro vytvoření větve se jménem "experimentalni" zadáme příkaz

$ git branch experimentalni

Jestliže následně zadáme příkaz

$ git branch

získáme výpis všech existujících větví.

  experimentalni
* master

Kde "experimentalni" je jméno právě vytvořené větve a "master" je implicitní automaticky vytvořená větev. Hvězdička označuje větev, ve které se právě nacházíme. Pro přechod k jiné větvi zadáme

$ git checkout experimentalni

Pro sloučení experimentalni větve s master zadáme

$ git commit -a    # v experientalni vetvi
$ git checkout master
$ git pull . experimentalni

Obnova nechtěně zrušených souborů

Zrušené soubory zobrazíme příkazem

$ git ls-files -d

pro jejich obnovení stačí zadat

$ git ls-files -d | xargs git checkout --

Převod CVS repozitáře na git

Přihlásíme se pomocí ssh na server s CVS repozitářem a pomocí příkazu git import vytvoříme git kopii. Tato operace může chvíli trvat, protože jsou převáděny všechny verze souborů uložené na CVS.

ssh gin@josef.fsv.cvut.cz
git cvsimport -v -d /home2/gin/cvsroot -C git gin

Na svém počítači vytvoříme klon nového git repozitáře.

git clone gin@josef.fsv.cvut.cz:/home2/gin/git

V adresáři git (jméno adresáře použité v naší ukázce) změníme jeden soubor, zobrazíme diff a uložíme změny v lokální kopii.

cd git
edit README
git diff
git commit -a

Pro uložení změn v hlavním repozitáři musíme použít příkaz git push.

Příklad

git cvsimport -v -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/sqltutor \
              -C sqltutor sqltutor

Převod SVN repozitáře na git

Převod SVN repozitáře na Git se provede pomocí příkazu git svnimport. Příklad: