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 ukazu git 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 imenik vaja1, 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 oznakama v1 in v2.
  • Z git checkout obnovite izvedbo v1 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 popravek 0001-*.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!

Zadnja sprememba: torek, 14. december 2021, 13.31