Dodat GIT.md — uputstvo za gitflow grane i tok rada
This commit is contained in:
@@ -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
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user