Git: Porovnání verzí
reorgraniyace |
|||
Řádek 2: | Řádek 2: | ||
'''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 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. | Git je svobodný softare šířený pod GPL licencí verze 2. | ||
== Instalace == | |||
apt-get install git-core | apt-get install git-core | ||
Řádek 18: | Řádek 9: | ||
Další doplňující balíčky jsou <tt>git-cvs</tt>, <tt>git-daemon-run</tt>, <tt>git-gui</tt>, <tt>gitk</tt> a <tt>gitweb</tt>. | Další doplňující balíčky jsou <tt>git-cvs</tt>, <tt>git-daemon-run</tt>, <tt>git-gui</tt>, <tt>gitk</tt> a <tt>gitweb</tt>. | ||
== Vytvoření repozitáře == | |||
Nový prázdný git repozitář vytvoří příkaz | Nový prázdný git repozitář vytvoří příkaz | ||
Řádek 34: | Řádek 25: | ||
Git může být takto používán i pro lokální projekty na kterých pracuje jediný uživatel. | 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 <tt>git clone</tt>, například | Repozitář, který máme přístupný přes ssh naklonujem příkazem <tt>git clone</tt>, například | ||
Řádek 40: | Řádek 31: | ||
git clone gin@josef.fsv.cvut.cz:/home2/gin/git [ ''adresář'' ] | 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 | 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 | ||
Řádek 65: | Řádek 56: | ||
$ git pull . experimentalni | $ git pull . experimentalni | ||
== Obnova nechtěně zrušených souborů == | |||
Zrušené soubory zobrazíme příkazem | Zrušené soubory zobrazíme příkazem | ||
Řádek 75: | Řádek 66: | ||
$ git ls-files -d | xargs git checkout -- | $ 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 <tt>git import</tt> 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. | Přihlásíme se pomocí ssh na server s CVS repozitářem a pomocí příkazu <tt>git import</tt> 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. | ||
Řádek 95: | Řádek 86: | ||
Pro uložení změn v hlavním repozitáři musíme použít příkaz <code>git push</code>. | Pro uložení změn v hlavním repozitáři musíme použít příkaz <code>git push</code>. | ||
=== Příklad === | |||
git cvsimport -v -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/sqltutor \ | git cvsimport -v -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/sqltutor \ | ||
-C sqltutor sqltutor | -C sqltutor sqltutor | ||
== Převod SVN repozitáře na git == | |||
Převod SVN repozitáře na Git se provede pomocí příkazu <tt>git svnimport</tt> (součást balíčku 'git-svn'). Příklad: | Převod SVN repozitáře na Git se provede pomocí příkazu <tt>git svnimport</tt> (součást balíčku 'git-svn'). Příklad: | ||
Řádek 115: | Řádek 106: | ||
landa = Martin Landa <martin.landa@fsv.cvut.cz> | landa = Martin Landa <martin.landa@fsv.cvut.cz> | ||
== Gitosis == | |||
[http://eagain.net/gitweb/?p=gitosis.git Gitosis] je nástroj pro správu Git repozitářů. | [http://eagain.net/gitweb/?p=gitosis.git Gitosis] je nástroj pro správu Git repozitářů. | ||
=== Instalace === | |||
apt-get install python-setuptools | apt-get install python-setuptools | ||
Řádek 129: | Řádek 120: | ||
apt-get install gitosis | apt-get install gitosis | ||
=== Zprovoznění === | |||
Založíme uživatele <tt>git</tt>. | Založíme uživatele <tt>git</tt>. | ||
Řádek 152: | Řádek 143: | ||
git clone git@josef.fsv.cvut.cz:gitosis-admin.git | git clone git@josef.fsv.cvut.cz:gitosis-admin.git | ||
== Externí ddkazy == | |||
* [http://www.kernel.org/pub//software/scm/git/docs/v1.2.6/tutorial.html A tutorial introduction to git] | |||
* [http://www.kernel.org/pub//software/scm/git/docs/v1.2.6/everyday.html Everyday GIT With 20 Commands Or So] | |||
* [http://progit.org/ Pro Git] | |||
* [http://git.or.cz/gitwiki/GitFaq FAQ] | |||
* [http://cs.wikipedia.org/wiki/Git Wikipedie] | |||
{{GNU GPL}} | {{GNU GPL}} |
Verze z 11. 4. 2010, 10:07
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.
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 (součást balíčku 'git-svn'). Příklad:
git svnimport -r -v -C landa-ds-git -I .gitignore -T "" -A authors file:///home2/vs/svn/landa-ds git clone --bare landa-ds-git landa-ds rm -rf landa-ds-git
Poznámka pro SVN repozitáře bez trunku.
Příklad souboru authors.
cat authors landa = Martin Landa <martin.landa@fsv.cvut.cz>
Gitosis
Gitosis je nástroj pro správu Git repozitářů.
Instalace
apt-get install python-setuptools git clone git://eagain.net/gitosis.git python setup.py install
nebo pro Debian GNU/Linux
apt-get install gitosis
Zprovoznění
Založíme uživatele git.
adduser \ --system \ --shell /bin/sh \ --gecos 'git version control' \ --group \ --disabled-password \ --home /home/git \ git
Vytvoříme repozitář pro Gitosis a nahraje veřejné klíče.
cd /home/git cd repositories gitosis-init < /tmp/id_dsa.pub chmod 775 gitosis-admin.git/hooks/post-update
Na lokální počítač stáhneme repozirář gitosis-admin.
git clone git@josef.fsv.cvut.cz:gitosis-admin.git