diff --git a/GIT.md b/GIT.md new file mode 100644 index 0000000..f7ca1ce --- /dev/null +++ b/GIT.md @@ -0,0 +1,108 @@ +# 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 +```