# Git tok rada (NTech) Projekat koristi **Gitflow** model: dve trajne grane (`main`, `develop`) i tri vrste privremenih grana (`feature/*`, `release/*`, `hotfix/*`). ## Grane | Grana | Uloga | Pravilo | |---|---|---| | `main` | **samo stabilne, objavljene verzije** | nikad direktan commit; ulazi samo `release/*` ili `hotfix/*`, uz tag verzije | | `develop` | integraciona grana — sav razvoj se skuplja ovde | radne grane se vraćaju ovde | | `feature/*` | jedna nova funkcija | grana se **od `develop`**, vraća **u `develop`** | | `release/*` | priprema verzije (zamrznut develop, samo popravke) | ide **u `main` + `develop`** | | `hotfix/*` | hitna popravka produkcije | grana se **od `main`**, vraća **u `main` + `develop`** | ## Remote-ovi | Remote | URL | Uloga | |---|---|---| | `gitea` | `git.vm-net.in.rs:Dasko/GoNtech.git` | primarni (privatni) | | `origin` | `github.com:dalibor31/GoNTech.git` | mirror | `develop` i `main` prate `gitea`. Push se radi na oba remote-a (vidi dole). --- ## Svakodnevni rad — nova funkcija ```bash git checkout develop git pull # povuci najnovije git checkout -b feature/ime-funkcije # nova grana od develop # ... rad, commit-ovi ... git checkout develop git merge feature/ime-funkcije # spoji nazad u develop git branch -d feature/ime-funkcije # obriši lokalnu granu ``` Konvencija imena: `feature/kratak-opis` (npr. `feature/pdv-izvestaj`, `feature/servis-garancija`). ## Objava stabilne verzije (`develop` → `main`) Kad je `develop` testiran i spreman za isporuku: ```bash git checkout main git merge develop git tag v1.0.0 # označi verziju (semver) ``` Svaki commit na `main` mora imati tag verzije — to je „release". ## Hitna popravka produkcije (hotfix) Bag na objavljenoj verziji koji ne može da čeka sledeći release: ```bash git checkout main git checkout -b hotfix/opis-popravke # grana se OD main # ... popravka + commit ... git checkout main git merge hotfix/opis-popravke git tag v1.0.1 # nova zakrpljena verzija git checkout develop git merge hotfix/opis-popravke # popravka mora i u develop git branch -d hotfix/opis-popravke ``` --- ## Push na remote (oba) ```bash # develop git checkout develop git push gitea develop git push origin develop # main (samo posle objave verzije, sa tagovima) git checkout main git push gitea main --tags git push origin main --tags ``` Push se radi **na zahtev** — ne automatski posle svakog commita. ## Pravila - **Nikad commit direktno na `main`.** Sve ide preko `develop` ili `hotfix/*`. - Preporuka: uključi **branch protection** za `main` na Gitea (Settings → Branches) da se zabrani direktan push. - Commit poruke na srpskom (ekavica), bez `Co-Authored-By` trailera. - `feature/*` grane su kratkog veka — spoji i obriši čim je funkcija gotova. ## Brza referenca ```bash git branch -vv # grane + koju remote granu prate git log --oneline -10 # poslednjih 10 commit-ova git status # šta je promenjeno git tag # spisak verzija ```