Jebkuram sekmīgam projektam ar failiem ir nepieciešama versiju kontroles sistēma. Nav svarīgi, vai jūs esat programmētājs, dizaineris, žurnālists vai kādas citas profesijas pārstāvis un strādājat pie projektiem ar daudz failiem, jums šī sistēma palīdzēs. Es jums piedāvāju nelielu ieskatu GIT versiju sistēmā, bet tikpat labi jūs varētu izmantot Subversion, Mercurial, Bazaar, CSV vai kādu citu alternatīvu.

Versiju kontroles sistēma ir paredzēta, lai sekotu līdzi izmaiņām failos un iegūtu pilnīgu vēsturi un kontroli par to – kad kas ko ir labojis, dzēsis, pārvietojis un kāpēc, ar iespēju atgriezties laikā, meklēt, apvienot izmaiņas dažādos laika posmos. Tās autors ir Linus Torvalds, kas to izveidoja Linux kodola projekta vajadzībām. Galvenie tā plusi ir ātrums (arī milzīgos projektos) un lietošanas ērtums.

Turpmāk apskatīsim GIT izmantošanu WEB projektā, bet tas pēc būtības var būt arī jebkāds cits failu kopums.

Iztēlojamies pavisam ikdienišķu situāciju programmējot kārtējo projektu. Tātad mums ir web lapa, kura jau ir palaista publiski, un klients liek veikt lielas izmaiņas ziņu modulī, kas mums prasa moduļa pilnīgu pārveidi. Mēs esam procesa vidū, no vecā moduļa nekas daudz nav palicis, kad pēkšņi atklājas kļūda esošajā ziņu modulī, kas pašlaik ir publiskā lietošanā. Tad nu šeit mēs saskaramies ar problēmu, jo mums lokāli vairs nav pieejams vecais ziņu modulis, ir tikai jaunais, bet tas vēl nav pabeigts. Mēs tagad varam meklēt kādā arhīvā veco versiju, atspiest, tad esošo versiju nolikt malā … Bet varam arī lietot GIT un pāris sekunžu laikā tikt pie failiem tajā stāvoklī, kādi tie bija, pirms es ķēros klāt jaunā moduļa veidošanai, un izlabot kļūdu, uzlikt izmaiņas uz servera un atgriezties pie jaunā moduļa izstrādes.

Šī bija viena no problēmām, ar kuru es saskāros agrāk, pirms GIT lietošanas, bet ir vēl vairāki citi piemēri:

  • tu nodzēs kādu failu un esi īsts vecis, kurš rezerves kopijas netaisa, un tagad esi spiests veidot to no jauna – ar GIT tu atgūtu failu sekundes laikā.
  • tu veic izmaiņas failā un gribi tās publiskot, bet izrādās, ka kolēģis arī ir veicis izmaiņas šajā pat failā, un nu ir problēma – GIT vairumā gadījumu spēs failus apvienot automātiski.
  • pētot kodu, tev rodas jautājumi par tā darbību, bet nav neviena komentāra, kas ir tā autors – GIT tev ir iespēja izsekot jebkuram teksta burtam un uzzināt, kas un kad, un kāpēc to ir pievienojis.
  • pirms gada tev bija ļoti noderīga metode, kuru negribētos veidot no jauna, bet kura sen kā ir dzēsta, un tu īsti neatceries, kurā failā tā atradās – GIT tev ir iespēja meklēt tekstu vēsturē.

 

Uzstādīšana

GIT pamatā iespējams novilkt šeit, bet labāk to uzstādīt specifiski OS:

  • lietojot Ubuntu (u.c. Debian bāzētos), uzliekot ar `sudo apt-get install git`
  • lietojot Windows, uzliekot http://code.google.com/p/msysgit/ – vai grafisko versiju http://code.google.com/p/tortoisegit/
  • lietojot OS X, uzliekot http://code.google.com/p/git-osx-installer/

 

Ikdienas lietošana

Tagad mēs mēģināsim izveidot reālu piemēru, lai redzētu, kā tas viss dzīvē strādā.

$ mkdir projekts
$ cd projekts
$ git init

Tātad izveidojām mapi, iegājām tajā un izpildījām git init, ar ko tad arī tika izveidota .git mape, kura saturēs visas turpmākās izmaiņas un visu GIT konfigurāciju.

$ vim hello.txt

Ierakstam failā šādu saturu:

Lauztās Priedes
Vējš augstākās priedes nolauza,
Kas kāpās pie jūras stāvēja.
Pēc tālēm tās skatieniem gribēja sniegt,
Ne slēpties tās spēja, ne muguras liekt.
$ git add hello.txt
$ git commit -am "Pievienoju pirmo failu"

Nu mums ir pirmais fails, kuru ar git add pievienojām repozitorijam, tādējādi GIT sekos izmaiņām šajā failā. Ar git commit mēs izpildījām sava veida “save”, kas saglabā visas esošās izmaiņas, kur -a norāda, ka izmaiņās iekļaujam visus failus (iespēja, protams, iekļaut tikai dažus), un -m satur īsu ziņu par to, kas šajās izmaiņās tika veikts, lai pārējiem komandas biedriem būtu skaidrs, ko tieši tu esi izdarījis.

Izpildot git log, mēs redzam ko stipri līdzīgu šim:

commit 2bfa5ea60e43fdc23fbd4face76e7cceb95f517b
Author: Gatis Tomsons <gatis@ithouse.lv>
Date:   Thu Mar 3 18:04:23 2011 +0200

    Pievienoju pirmo failu
Tā ir vēsture, kurā mēs redzam visas pēdējās izmaiņas. Tagad atveram failu vēlreiz vim hello.txt un nodzēšam pirmo rindu, un pievienojam vēl pāris rindas:
 
"Kam lauzi mūs naidīgā pretvara,
Vēl cīņa pret tevi nav nobeigta!"
Vēl ilgās pēc tālēm dveš pēdējais vaids,
Ik zarā pret varu šņāc nerimstošs naids.

Tagad, izpildot git diff, mēs redzam mūsu veiktās izmaiņas attiecībā pret pēdējo commit:

diff --git a/hello.txt b/hello.txt
index 02c6ea3..530c3a2 100644
--- a/hello.txt
+++ b/hello.txt
@@ -1,5 +1,10 @@
-Lauztās Priedes 
+Lauztās priedes
 Vējš augstākās priedes nolauza,
 Kas kāpās pie jūras stāvēja.
 Pēc tālēm tās skatieniem gribēja sniegt, 
 Ne slēpties tās spēja, ne muguras liekt.
+
+"Kam lauzi mūs naidīgā pretvara,
+Vēl cīņa pret tevi nav nobeigta!"
+Vēl ilgās pēc tālēm dveš pēdējais vaids,
+Ik zarā pret varu šņāc nerimstošs naids.

Pieglabājam visu, git commit -am "Pievienojām otro pantu", un, izpildot git log, mēs redzam, ka ir pievienots jauns atskaites punkts. Ar git log -p mēs atkal varam redzēt vēl detalizētāk – kas ko kad ir izmainījis.

Ar git checkout <šeit SHA1 identifikators no komita> mēs varam atgriezties laikā un redzēt failus tādus, kādi tie bija konkrētajā izstrādes brīdī, un pēc tam ar git checkout master atgriezties tekošajā zarā pie pēdējām izmaiņām.

Biežāk lietotās komandas

  • git init – izveidot jaunu repozitoriju
  • git add – pievienot failus repozitorijam
  • git rm – dzēst failus no repozitorija
  • git log – skatīt vēsturi
  • git status – skatīt tekošo statusu failiem
  • git diff – skatit tekošās izmaiņas
  • git commit – saglabāt izmaiņas
  • git merge – apvienot dažādus zarus vienā

Palīdzību par katru komandu var iegūt turpat komandrindā git help <komanda> jeb kādā no sekojošām saitēm:

 

Lai GIT lietotu kopā ar kolēģiem/draugiem, tev nepieciešams uzstādīt serveri vai jāizmanto kāds gatavs serviss, kā piemēram, https://github.com/, kur bez maksas iespējams turēt neierobežotu daudzumu projektu, ja vien esi ar mieru dalīties tajos ar pārējiem, kā to darām mēs. Protams, ir pieejami arī maksas plāni.

  • Paldies, ļoti labi uzrakstīts. Tieši taisījos sākt lietot kādu versiju controles sistēmu un meklēju info.

  • Edgars Liekniņš

    ideāls info tnx