Git
Na teh vajah bomo ponovili osnove dela s sistemom git, ki ga boste uporabljali za oddajanje domačih nalog. Za ta namen ima vsak študent ima dostop do strežnika spox
, na katerega se prijavi preko SSH z univerzitetnim uporabniškim imenom in geslom:
$ ssh ab1234@spox.fri.uni-lj.si
Priporočljivo je, da si nastavite prijavo s ključem (angl. public key authentication). S tem se izognete pisanju gesla ob vsaki operaciji.
Nova shramba
Shrambo (angl. repository oz. repo) spo
v svojem domačem imeniku ustvarimo tako, da se prijavimo na spox in mu ukažemo
$ git init --bare ~/spo
Initialized empty Git repository in /home/student.uni-lj.si/ab1234/spo/.git/
Z gitom lahko zdaj dostopamo do shrambe na (okrajšanem) naslovu ab1234@spox.fri.uni-lj.si:spo
.
- Kaj pomeni argument
--bare
ukazugit init
? - Kakšen je neokrajšan naslov shrambe?
- Kakšen pa je najkrajši naslov, s katerim dobite shrambo svojega soseda?
Lokalna kopija
Sistem git je decentraliziran, zato vsaka kopija vsebuje celotno zgodovino projekta. Na svojem računalniku ustvarite kopijo vaše (zaenkrat prazne) shrambe z
$ git clone ab1234@spox.fri.uni-lj.si:spo
Cloning into 'spo'...
warning: You appear to have cloned an empty repository.
- Kateri protokol uporabi git za dostop do shrambe?
- Katere imenike oziroma datoteke je ustvaril git?
- Izpišite vsebino imenika
.git
in datoteke.git/config
.
Delo s shrambo
Domače naloge boste hranili v imenikih ass{1,2,3}
. Tukaj si ogledamo, kako v shrambo dodajamo in v njej spreminjamo datoteke.
- V lokalni kopiji projekta
spo
ustvarite imenikvaja1
, vanj pa zapišite nekaj datotek s poljubno vsebino. - Z
git status
preverite stanje lokalne shrambe. - Z
git add
dodajte eno ali več datotek v pripravljalno področje (angl. staging area oz. index). - Z
git commit
vključite pripravljene spremembe v shrambo. - Z
git show
izpišite vsebino zadnje izvedbe (angl. revision oz. commit). Katere informacije vsebuje?
Sinhronizacija
Vse spremembe so zaenkrat le v lokalni shrambi.
- Svoje spremembe z
git push
potisnite v shrambo na strežniku. V tem ukazu smo spustili privzete argumente – kateri so? - Dodajte še nekaj datotek in popravite vsebino obstoječih; kakšno tudi izbrišite z
git rm
. Spremembe postopoma (v več izvedbah) dodajte v lokalno shrambo. - Izpišite zgodovino sprememb z
git log
. Katere veje (angl. branches) pozna lokalna shramba in na katere izvedbe kažejo? Kako izpišemo zgodovino samo za določeno datoteko? Kaj pa za določeno vejo? - Na strežnik potisnite še nove spremembe.
Oznake
Git za označevanje izvedb uporablja vsebinsko naslavljanje: oznaka izvedbe je zgoščena vrednost njene vsebine. To je precej prikladno, a ne najbolj priročno. Izvedbe lahko zato označimo (angl. tag) tudi s krajšim imenom.
- Z
git tag
označite prvo in trenutno izvedbo svojega projekta z oznakamav1
inv2
. - Z
git checkout
obnovite izvedbov1
in si oglejte vsebino datotek. - Obnovite najnovejšo izvedbo. Privzeto je to veja
master
.
★ Deljenje sprememb
Spremembe lahko iz lokalne shrambe izvozimo v obliki popravkov (angl. patches). Naslednjo nalogo naredite v parih.
- Ustvarite lokalno kopijo sosedove shrambe, v njej spremenite vsebino ene datoteke in spremembe vključite v shrambo.
- Z
git format-patch HEAD^
izvozite zadnjo spremembo na trenutni veji. Oglejte si popravek0001-*.patch
in ga pošljite sosedu. - Sosed z
git am
v svoji kopiji shrambe uveljavi predlagane spremembe in jih potisne na strežnik. - Po navodilih nastavite git na svojem računalniku tako, da bo znal pošiljati pošto, in pošljite popravek z
git send-email
.
Zdaj ste pripravljeni na sodelovanje pri projektih, kot sta git in linux!