Git ir pasaulē populārākā versiju kontroles sistēma (VCS — Version Control System), ko izmanto gandrīz katrā programmatūras izstrādes projektā. To 2005. gadā izveidoja Linuss Torvalds — Linux kodola radītājs — lai efektīvi pārvaldītu Linux izstrādi.
Versiju kontrole ļauj izsekot koda izmaiņām, atgriezties pie iepriekšējām versijām, strādāt vairākiem izstrādātājiem vienlaicīgi un droši eksperimentēt ar jaunu funkcionalitāti.
1. Kāpēc Git ir nepieciešams?
Iedomājieties šādu situāciju bez versiju kontroles:
projekts/
├── index_v1.html
├── index_v2.html
├── index_v2_labots.html
├── index_FINAL.html
├── index_FINAL_v2.html
└── index_TIEŠĀM_FINAL.html
Pazīstami? Git atrisina šo problēmu — tas saglabā pilnu izmaiņu vēsturi, un jums vienmēr ir tikai viens fails ar iespēju atgriezties pie jebkuras iepriekšējās versijas.
Git priekšrocības
- Pilna vēsture — katra izmaiņa tiek saglabāta ar datumu, autoru un aprakstu
- Zaru (branch) sistēma — iespēja strādāt pie jaunām funkcijām, neietekmējot galveno kodu
- Komandas darbs — vairāki izstrādātāji var strādāt pie viena projekta vienlaicīgi
- Dublēšana — katrs izstrādātājs iegūst pilnu projekta kopiju
- Atgriešanās — vienmēr var atgriezties pie jebkuras iepriekšējās versijas
- Bezmaksas — Git ir atvērtā koda programmatūra
2. Instalēšana
Linux (Ubuntu / Debian)
sudo apt update
sudo apt install git -y
Linux (CentOS / Fedora)
sudo dnf install git -y
macOS
# Izmantojot Homebrew
brew install git
# Vai instalējiet Xcode Command Line Tools
xcode-select --install
Windows
Lejupielādējiet instalācijas failu no git-scm.com. Instalācijas laikā atlasiet "Git Bash" — tas nodrošinās Linux-līdzīgu termināli.
Pārbaude
git --version
# Piemēram: git version 2.43.0
3. Sākotnējā konfigurācija
Pirms sākat lietot Git, iestatiet savu vārdu un e-pastu — šī informācija tiks pievienota katram jūsu veiktajam commitam:
git config --global user.name "Jānis Bērziņš"
git config --global user.email "janis@example.com"
Papildu noderīgi iestatījumi
# Noklusējuma zara nosaukums (main, nevis master)
git config --global init.defaultBranch main
# Krāsainais izvads
git config --global color.ui auto
# Noklusējuma teksta redaktors
git config --global core.editor nano
# Skatīt visus iestatījumus
git config --list
4. Pamata koncepti
Pirms sākam lietot Git komandas, svarīgi saprast tā pamatjēdzienus:
Trīs darba zonas
| Zona | Apraksts | Komanda |
|---|---|---|
| Working Directory (darba direktorija) | Faili, ar kuriem jūs strādājat | Rediģēšana failos |
| Staging Area (sagatavošanas zona) | Faili, kas sagatavoti nākamajam commitam | git add |
| Repository (repozitorijs) | Saglabātā izmaiņu vēsture | git commit |
Darba plūsma izskatās šādi:
Rediģēt failus → git add → git commit
(Darba dir.) (Staging) (Repozitorijs)
Kas ir commit?
Commit ir "momentuzņēmums" (snapshot) jūsu projekta stāvoklim konkrētā brīdī. Katrs commit satur:
- Izmaiņu sarakstu
- Autora vārdu un e-pastu
- Datumu un laiku
- Apraksta ziņojumu (commit message)
- Unikālu identifikatoru (SHA-1 hash)
5. Pirmā repozitorija izveide
Jauna repozitorija inicializēšana
# Izveidojiet projekta mapi
mkdir mans-projekts
cd mans-projekts
# Inicializējiet Git repozitoriju
git init
Komanda git init izveido slēptu mapi .git/, kurā Git glabā visu versiju vēsturi.
Pirmais commit
# Izveidojiet failu
echo "<h1>Sveika, pasaule!</h1>" > index.html
# Pārbaudiet statusu
git status
# Pievienojiet failu staging zonai
git add index.html
# Veiciet commit
git commit -m "Pievienot sākuma lapu"
git status — jūsu labākais draugs
Komanda git status parāda pašreizējo stāvokli — kuri faili ir mainīti, kuri pievienoti staging zonai, un kuri vēl nav izsekoti:
$ git status
On branch main
Changes not staged for commit:
modified: index.html
Untracked files:
style.css
no changes added to commit
6. Failu pievienošana un committēšana
git add — failu sagatavošana
# Pievienot konkrētu failu
git add index.html
# Pievienot vairākus failus
git add index.html style.css script.js
# Pievienot visus mainītos un jaunos failus
git add .
# Pievienot visus noteikta tipa failus
git add *.html
# Pievienot visu mapes saturu
git add src/
git commit — izmaiņu saglabāšana
# Commit ar ziņojumu
git commit -m "Pievienot CSS stilus"
# Commit ar detalizētu aprakstu (atvērs redaktoru)
git commit
# Pievienot un committēt visus MAINĪTOS failus vienā solī
# (neattiecas uz jauniem failiem)
git commit -am "Labot navigācijas kļūdu"
Laba commit ziņojuma rakstīšana
Kvalitatīvs commit ziņojums ir īss, bet informatīvs:
| ✅ Labi | ❌ Slikti |
|---|---|
| Pievienot lietotāja reģistrācijas formu | Izmaiņas |
| Labot 404 kļūdu kontaktu lapā | fix |
| Optimizēt attēlu ielādi mobilajā versijā | stuff |
| Noņemt neizmantoto CSS kodu | update |
Ieteikums: rakstiet commit ziņojumus pavēles izteiksmē — "Pievienot", "Labot", "Noņemt", nevis "Pievienots", "Labots".
7. Izmaiņu vēstures skatīšana
# Pilna commitu vēsture
git log
# Kompakta vēsture (vienā rindā katrs commit)
git log --oneline
# Vēsture ar grafiku (noderīga darbam ar zariem)
git log --oneline --graph --all
# Pēdējie 5 commiti
git log -5
# Konkrēta faila vēsture
git log -- index.html
# Commiti ar izmaiņu detaļām
git log -p
git diff — izmaiņu salīdzināšana
# Nesagatavotās izmaiņas (working dir vs staging)
git diff
# Sagatavotās izmaiņas (staging vs pēdējais commit)
git diff --staged
# Salīdzināt divus commitus
git diff abc123 def456
# Salīdzināt konkrēta faila izmaiņas
git diff index.html
8. Zari (branches)
Zari ir viena no Git jaudīgākajām funkcijām. Tie ļauj strādāt pie dažādām funkcijām vai labojumiem paralēli, neietekmējot galveno kodu.
Kāpēc lietot zarus?
main (galvenais, stabils kods)
├── feature/kontaktu-forma (jauna funkcija)
├── fix/navigacijas-kluda (kļūdas labojums)
└── experiment/jauns-dizains (eksperiments)
Zaru komandas
# Skatīt visus lokālos zarus
git branch
# Izveidot jaunu zaru
git branch jauna-funkcija
# Pārslēgties uz zaru
git checkout jauna-funkcija
# Izveidot un uzreiz pārslēgties (īsāk)
git checkout -b jauna-funkcija
# Vai ar jaunāko komandu:
git switch -c jauna-funkcija
# Pārslēgties atpakaļ uz main
git checkout main
# Dzēst zaru (pēc apvienošanas)
git branch -d jauna-funkcija
# Piespiedu dzēšana (neapvienots zars)
git branch -D jauna-funkcija
Praktiski piemēri
# 1. Izveidot zaru jaunai funkcijai
git checkout -b feature/kontaktu-forma
# 2. Veikt izmaiņas
nano kontakti.html
git add kontakti.html
git commit -m "Pievienot kontaktu formu"
# 3. Vēl izmaiņas
nano style.css
git add style.css
git commit -m "Stilizēt kontaktu formu"
# 4. Atgriezties uz main
git checkout main
# 5. Apvienot zaru
git merge feature/kontaktu-forma
# 6. Dzēst vairs nevajadzīgo zaru
git branch -d feature/kontaktu-forma
9. Zaru apvienošana (merge)
Kad darbs zarā ir pabeigts, to apvieno ar galveno zaru:
# Pārslēgties uz zaru, kurā vēlaties apvienot
git checkout main
# Apvienot zaru
git merge feature/jauna-funkcija
Apvienošanas konflikti
Konflikts rodas, kad divi zari ir mainījuši vienu un to pašu rindu vienā failā. Git nevar automātiski izlemt, kura versija ir pareiza.
$ git merge feature/dizains
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.
Atveriet konflikta failu — Git iezīmē problemātiskās vietas:
<h1>Mana mājas lapa</h1>
<<<<<<< HEAD
<p>Laipni lūgti manā lapā!</p>
=======
<p>Sveicināti mūsu jaunajā vietnē!</p>
>>>>>>> feature/dizains
Lai atrisinātu konfliktu:
- Atveriet failu un izvēlieties pareizo versiju (vai kombinējiet abas)
- Noņemiet Git iezīmes (<<<<<<<, =======, >>>>>>>)
- Saglabājiet failu
- Pievienojiet un committējiet:
git add index.html
git commit -m "Atrisināt merge konfliktu index.html"
10. Darbs ar attālo repozitoriju (GitHub / GitLab)
Līdz šim mēs strādājām tikai lokāli. Lai dalītos ar kodu vai saglabātu to mākonī, izmantojiet attālo repozitoriju.
Populārākās platformas
| Platforma | Raksturojums |
|---|---|
| GitHub | Populārākā platforma, milzīga kopiena, bezmaksas privātie repozitoriji |
| GitLab | Iebūvēts CI/CD, var uzstādīt lokālā serverī |
| Bitbucket | Cieša integrācija ar Jira un Atlassian produktiem |
Savienošana ar attālo repozitoriju
# Pievienot attālo repozitoriju
git remote add origin https://github.com/lietotajs/mans-projekts.git
# Skatīt pievienotos attālos repozitorijus
git remote -v
# Augšupielādēt kodu uz GitHub
git push -u origin main
Klonēšana — esoša repozitorija lejupielāde
# Klonēt repozitoriju
git clone https://github.com/lietotajs/projekts.git
# Klonēt konkrētā mapē
git clone https://github.com/lietotajs/projekts.git mana-mape
# Klonēt konkrētu zaru
git clone -b develop https://github.com/lietotajs/projekts.git
Sinhronizācija
# Lejupielādēt jaunākās izmaiņas
git pull
# Augšupielādēt savas izmaiņas
git push
# Lejupielādēt informāciju bez apvienošanas
git fetch
| Komanda | Darbība |
|---|---|
| git push | Augšupielādē lokālos commitus uz attālo serveri |
| git pull | Lejupielādē un apvieno attālas izmaiņas (= fetch + merge) |
| git fetch | Lejupielādē informāciju, bet neapvieno — var apskatīt pirms merge |
| git clone | Pilnīga repozitorija kopēšana (pirmā reize) |
11. Izmaiņu atsaukšana
Kļūdas gadās visiem. Git piedāvā vairākus veidus, kā atsaukt izmaiņas:
Nesagatavotu izmaiņu atsaukšana (working directory)
# Atjaunot konkrētu failu uz pēdējo commit versiju
git checkout -- index.html
# Vai ar jaunāko sintaksi:
git restore index.html
# Atjaunot visus mainītos failus
git restore .
Failu noņemšana no staging zonas
# Noņemt no staging, saglabājot izmaiņas failā
git reset HEAD index.html
# Vai ar jaunāko sintaksi:
git restore --staged index.html
Pēdējā commita labošana
# Mainīt pēdējā commita ziņojumu
git commit --amend -m "Labots ziņojums"
# Pievienot aizmirstus failus pēdējam commitam
git add aizmirsts-fails.html
git commit --amend --no-edit
Commita atsaukšana (droši)
# Izveidot jaunu commitu, kas atsauc konkrēta commita izmaiņas
git revert abc1234
Svarīgi: git revert ir drošs — tas izveido jaunu commitu, kas atceļ izmaiņas, nezaudējot vēsturi. Tas ir ieteicamais veids, kā atsaukt publiskotus commitus.
12. .gitignore — failu izslēgšana
Ne visi faili jāiekļauj versiju kontrolē. Faili ar parolēm, būvējuma rezultāti un pagaidu faili jāizslēdz.
Izveidojiet failu .gitignore projekta saknē:
# Atkarību mapes
node_modules/
vendor/
# Vides mainīgie un noslēpumi
.env
.env.local
*.key
*.pem
# Būvējuma rezultāti
dist/
build/
*.min.js
*.min.css
# OS un redaktora faili
.DS_Store
Thumbs.db
.vscode/
.idea/
*.swp
*.swo
# Logu faili
*.log
npm-debug.log*
# Pagaidu faili
tmp/
*.tmp
.gitignore noteikumi
| Šablons | Nozīme | Piemērs |
|---|---|---|
| *.log | Visi faili ar paplašinājumu .log | error.log, access.log |
| build/ | Visa mape "build" | build/app.js |
| !important.log | Izņēmums — neizslēgt šo failu | important.log |
| doc/*.txt | .txt faili tikai doc/ mapē | doc/notes.txt |
| **/temp | "temp" mape jebkurā līmenī | src/temp, a/b/temp |
Padoms: vietnē gitignore.io var automātiski ģenerēt .gitignore failu atbilstoši jūsu tehnoloģijām.
13. Noderīgas Git komandas
| Komanda | Apraksts |
|---|---|
git status |
Pašreizējais stāvoklis |
git log --oneline |
Kompakta commitu vēsture |
git diff |
Nesagatavotās izmaiņas |
git stash |
Pagaidām nolikt malā nepabeigtas izmaiņas |
git stash pop |
Atjaunot malā noliktas izmaiņas |
git blame index.html |
Kas mainīja katru rindu failā |
git show abc123 |
Skatīt konkrēta commita detaļas |
git tag v1.0 |
Atzīmēt commitu ar versijas tagu |
git clean -fd |
Dzēst neizsekotus failus un mapes |
git remote -v |
Attālie repozitoriji |
14. Tipiska darba plūsma
Šeit ir tipiska ikdienas darba plūsma ar Git:
# 1. Sinhronizēt ar attālo serveri
git pull
# 2. Izveidot zaru jaunai funkcijai
git checkout -b feature/jauns-dizains
# 3. Veikt izmaiņas
# ... rediģēt failus ...
# 4. Apskatīt, kas mainījies
git status
git diff
# 5. Sagatavot un committēt
git add .
git commit -m "Ieviest jaunu galvenes dizainu"
# 6. Augšupielādēt zaru
git push -u origin feature/jauns-dizains
# 7. Izveidot Pull Request (GitHub/GitLab vietnē)
# ... koda pārskats ...
# 8. Pēc apstiprināšanas — apvienot ar main
git checkout main
git pull
git merge feature/jauns-dizains
git push
# 9. Dzēst vairs nevajadzīgo zaru
git branch -d feature/jauns-dizains
git push origin --delete feature/jauns-dizains
15. Biežākās kļūdas un to risinājumi
| Problēma | Risinājums |
|---|---|
| Commitēju uz nepareiza zara | git reset HEAD~1 → pārslēgties uz pareizo zaru → committēt |
| Aizmirsu pievienot failu commitam | git add fails.html && git commit --amend --no-edit |
| Kļūda commit ziņojumā | git commit --amend -m "Pareizais ziņojums" |
| Nejauši izdzēsu failu | git restore izdzestais.html |
| Vēlos atsaukt pēdējo commitu | git revert HEAD (droši) vai git reset HEAD~1 (lokāli) |
| push noraidīts (non-fast-forward) | git pull --rebase → tad git push |
| Liels fails nejauši commitēts | Pievienojiet .gitignore un izmantojiet git rm --cached fails |
Kopsavilkums
Git ir būtisks rīks katram izstrādātājam. Sākumā var šķist sarežģīti, bet ikdienas darbā parasti pietiek ar 10–15 pamata komandām:
- Sāciet ar pamatu — init, add, commit, status, log
- Iemācieties zarus — branch, checkout, merge
- Strādājiet ar attālo repozitoriju — clone, push, pull
- Izveidojiet .gitignore — izslēdziet nevajadzīgos failus
- Rakstiet labus commit ziņojumus — jūsu nākotnes "es" pateiks paldies
- Nebaidieties no kļūdām — Git gandrīz vienmēr ļauj atsaukt izmaiņas
Noderīgas saites:
- Git oficiālā dokumentācija — pilna Git atsauce
- Learn Git Branching — interaktīva vizuāla pamācība
- GitHub — populārākā koda krātuve
- Oh Shit, Git!?! — risinājumi biežākajām Git kļūdām
- Atlassian Git pamācības — detalizēti ceļveži
Laboja mad, labots 1x










