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
--bareukazugit 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
.gitin 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
spoustvarite imenikvaja1, vanj pa zapišite nekaj datotek s poljubno vsebino. - Z
git statuspreverite stanje lokalne shrambe. - Z
git adddodajte eno ali več datotek v pripravljalno področje (angl. staging area oz. index). - Z
git commitvključite pripravljene spremembe v shrambo. - Z
git showizpišite vsebino zadnje izvedbe (angl. revision oz. commit). Katere informacije vsebuje?
Sinhronizacija
Vse spremembe so zaenkrat le v lokalni shrambi.
- Svoje spremembe z
git pushpotisnite 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 tagoznačite prvo in trenutno izvedbo svojega projekta z oznakamav1inv2. - Z
git checkoutobnovite izvedbov1in 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-*.patchin ga pošljite sosedu. - Sosed z
git amv 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!