# Git i gałęzie — na co patrzeć ## Jedna gałąź „źródła prawdy” - **`main`** na GitHubie (`origin/main`) to **aktualny, scalony kod** do pracy na laptopie (`git pull origin main`). - Gałęzie o nazwie **`cursor/…`** to zwykle **praca chwilowa** (feature / agent). Po scaleniu do `main` ich **zawartość jest już w `main`** — sama nazwa gałęzi na serwerze może zostać z historii; **nie musisz** na nich pracować, jeśli nie otwierasz nowego zadania. ## Szybka orientacja na laptopie ```bash git status -sb # czy jesteś na main i czy masz niezcommitowane zmiany git branch -vv # lokalne gałęzie + czy śledzą origin git fetch origin && git log --oneline -3 main origin/main ``` - Jeśli widzisz `## main...origin/main` **bez** `[ahead …]` / `[behind …]` — jesteś zsynchronizowany z GitHubem. - Jeśli jesteś na **`cursor/coś`** i nie pamiętasz po co — porównaj z `main`: ```bash git fetch origin main git log --oneline HEAD..origin/main # commity na main, których nie masz na tej gałęzi git log --oneline origin/main..HEAD # commity tylko u Ciebie (rzadko — zwykle wróć na main) ``` ## Dlaczego „w plikach jest mniej spójności” 1. **Różne gałęzie lokalnie** — stary checkout może mieć inną wersję README / `.env.example` niż `main`. Rozwiązanie: **`git checkout main && git pull origin main`** przed oceną spójności. 2. **Wiele źródeł prawdy w treści** — np. README vs `_docs/` vs `.env.example`; staramy się je zbliżać przy zmianach. Gdy coś się rozjeżdża, **źródłem zachowania runtime jest kod** (`backend/`, `tools/`, `lib/`), potem `.env.example` / README. 3. **Zdalne gałęzie `projekt/…` lub inne** — mogą być z innych linii pracy; do codziennej pracy w tym repo wystarcza **`main`**. ## Porządki lokalne (opcjonalnie) Po upewnieniu się, że wszystko ważne jest na `main`, możesz usunąć **lokalne** gałęzie, których już nie potrzebujesz: ```bash git checkout main git branch | grep '^ cursor/' # podgląd # git branch -d cursor/nazwa # usuń jedną, jeśli merge był już na main ``` Usuwanie gałęzi na **GitHubie** (`git push origin --delete …`) rób tylko wtedy, gdy na pewno nikt z nich nie korzysta i nie są potrzebne do audytu. ## Nowa praca ```bash git checkout main && git pull origin main git checkout -b cursor/krótki-opis-1ae7 # … zmiany … git push -u origin cursor/krótki-opis-1ae7 ``` Suffix **`1ae7`** bywa używany w automatycznych nazwach z Cursor Cloud — możesz też używać własnych nazw, byle **małe litery** (kompatybilność z dyskami bez rozróżniania wielkości liter).