Autor Zpráva
jrw
Profil
Ahoj,

našel jsem na linuxexpresu tento postup (http://www.linuxexpres.cz/praxe/sprava-linuxoveho-serveru-git-na-vlastnim-serveru?highlightWords=git+cloneI) jak nakolonovat na sever repozitář.

git clone --bare .git /tmp/muj_repositar.git
scp -r /tmp/muj_repositar.git uzivatel@server.example.cz:/home/uzivatel/git/muj_repositar.git
git remote add origin ssh://uzivatel@server.example.cz/home/uzivatel/git/muj_repositar.git

Chtěl bych se zeptat proč se klonuje nejdřív do /tmp/ a proč se používá --bare.


Díky
juriad
Profil
Klonováním na server se myslí vytvoření repozitory určeného jen k ukládání, nikoli k práci.
--bare
           Make a bare Git repository. That is, instead of creating <directory> and placing the administrative files in <directory>/.git, make the <directory> itself the $GIT_DIR. This obviously implies the -n because there is nowhere to check out the working tree. Also the branch heads at the remote are copied directly to corresponding local branch heads, without mapping them to refs/remotes/origin/. When this option is used, neither remote-tracking branches nor the related configuration variables are created.

V takovém repozitory neexistuje pracovní adresář, nemůžeš v něm checkoutovat, ani commitovat.
Důvodem k tomuto je:
- bezpečnost - nikdo nebude mít snahu pracovat přímo na serveru; nikdo nic nezkazí
- velikost - každý soubor je uložen jen jedenkrát; normálně totiž existuje soubor v historii (adresář .git) i v pracovním adresáři

Pokud máš u sebe plnohodnotné repozitory, musíš ho napřed „osekat“ naklonováním do jiného adresáře s přepínačem --bare.
Pak toto osekané repozitory nahraješ na server (scp).
A nakonec nakonfiguruješ svoje původní repozitory tak, aby origin směřoval na to repozitory na serveru.
Origin je výchozí název vzdáleného repozitory, do kterého se pushuje nebo ze kterého se pulluje (fetchuje).

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: