Feature Branch „ je technika větvení v Git, při které je každá nová funkce vyvíjena v samostatné větvi, izolované od hlavního kódu. To umožňuje několika vývojářům pracovat současně na různých úkolech bez rizika poškození stabilní verze projektu. Podle Atlassian, 2024 je Feature Branch klíčovým prvkem Git Flow a používá se ve většině komerčních projektů.
Hlavní body
feature/název-funkce ve standardním Git Flow.Feature Branch (větev funkce) „ je dočasná větev v Git, vytvořená z develop pro vývoj samostatné funkcionality. Na rozdíl od dlouhožijících větví main a develop existují feature větve omezenou dobu „ od několika hodin do několika týdnů.
Hlavním cílem feature branch je izolovat změny související s jedním úkolem od zbytku kódu. Vývojář může experimentovat, dělat mnoho commitů a dokonce rozbít kód ve své větvi, aniž by ovlivnil práci ostatních členů týmu.
Po dokončení vývoje je feature větev sloučena zpět do develop prostřednictvím Pull Request s povinnou revizí kódu. Po sloučení je větev obvykle smazána, aby repozitář zůstal čistý.
Podle Vincent Driessen, 2010 se model Git Flow s feature větvemi stal průmyslovým standardem díky jasnému rozdělení odpovědnosti mezi různé typy větví.
Workflow s feature branch se skládá z posloupnosti kroků, které vývojář provádí pro každou novou funkci. Tento proces minimalizuje konflikty sloučení a zajišťuje kontrolu kvality kódu.
Pravidelná synchronizace s develop je kriticky důležitá. Čím déle feature větev žije bez sloučení změn z develop, tím vyšší je pravděpodobnost konfliktů při konečném sloučení.
| Frekvence synchronizace | Riziko konfliktů | Pohodlí vývoje |
|---|---|---|
| Denně | Nízké | Vyžaduje častý rebase nebo merge |
| Jednou týdně | Střední | Komfortní režim, mírné konflikty |
| Jednou měsíčně | Vysoké | Riziko složitého řešení merge konfliktů |
| Nikdy | Kritické | Sloučení může být nemožné bez ztráty dat |
Pojmenování větví „ důležitá součást týmové disciplíny. Jednotný standard názvů umožňuje rychle určit, na jakém úkolu se pracuje a kdo jej provádí.
feature/added-auth-module.feature/PROJ-42-add-login.feature/feat/analytics-dashboard.Použití ID úkolu z JIRA, Trello nebo jiného systému je nejlepší praxí. Automaticky propojuje kód s úkolem a zjednodušuje vyhledávání větví pomocí git log.
Pull Request (nebo Merge Request v GitLab) „ je žádost o sloučení feature větve do develop. PR není jen technická operace, ale proces týmové revize kódu, který zvyšuje kvalitu kódu a šíří znalosti v týmu.
Dobrý PR obsahuje nadpis s krátkým popisem úkolu, odkaz na ticket a popis změn. Vývojář by měl uvést, co přesně bylo provedeno, které soubory byly změněny a zda existují potenciální rizika pro jiné části projektu.
Tým prohlíží kód v PR, zanechává komentáře, požaduje změny (change requests) a schvaluje sloučení (approve). Po schválení se provede merge nebo squash merge.
Průměrná doba kontroly PR v mobilním vývoji je 4 až 24 hodin. Knihovna Danger automatizuje část kontrol, spouští lintery a testy přímo v PR.
Po schválení PR může být feature větev sloučena do develop různými způsoby. Volba strategie sloučení ovlivňuje historii commitů a možnost vrácení změn.
Pro mobilní projekty s častými vydáními se nejčastěji používá squash merge: poskytuje čistou historii v develop, zatímco detaily vývoje zůstávají v popisu PR a v úkolu trackeru.
I zkušení vývojáři dělají chyby při práci s feature větvemi. Znalost typických problémů pomáhá vyhnout se ztrátě času a dat.
Nejlepším způsobem, jak se těmto problémům vyhnout, je dohodnout se na pravidlech práce na začátku projektu a používat automatické kontroly v CI/CD pipeline.
Podívejme se na praktický scénář: vývojář začíná novou funkci autentizace v mobilní aplikaci. Vytvoří feature větev, pracuje na kódu a dokončí úkol pomocí Pull Request.
# Aktualizace develop a vytvoření feature větve
git checkout develop
git pull origin develop
git checkout -b feature/add-login-screen
# Práce na funkci: commity
git add src/ui/login/
git commit -m "Add login screen layout"
# Odeslání feature větve na server
git push origin feature/add-login-screen
# Synchronizace s develop (rebase)
git fetch origin develop
git rebase origin/develop
# Po schválení PR: aktualizace lokálního develop a smazání větve
git checkout develop
git pull origin develop
git branch -d feature/add-login-screen
Příkaz git branch -d maže větev až poté, co jsou její změny plně sloučeny. Pokud větev není sloučena, Git navrhne použít git branch -D pro vynucené smazání „ používejte tento příznak opatrně.
CI/CD pipeline by se měl spouštět pro každou feature větev před vytvořením PR. To umožňuje odhalit problémy v rané fázi, než se kód dostane k revizi ostatním vývojářům.
# GitHub Actions pro kontrolu feature větve
name: Feature Branch CI
on:
push:
branches:
- 'feature/**'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run tests
run: ./gradlew test
- name: Lint check
run: ./gradlew lint
Pipeline kontroluje, zda se kód kompiluje, testy procházejí a styl kódu odpovídá standardům přijatým v týmu. Teprve po úspěšném absolvování všech kontrol lze vytvořit Pull Request.
Často kladené otázky
Ano, to je standardní praxe. Každý vývojář může pracovat ve své feature větvi a všechny se nezávisle synchronizují s develop. Hlavní pravidlo „ jedna větev na jeden úkol, aby se předešlo cross-task závislostem v kódu.
Proveďte git rebase origin/develop na vaší feature větvi. Pokud vzniknou konflikty „ řešte je jeden po druhém, commity budou přepsány na vrchol posledního stavu develop. Po rebase bude vyžadován git push --force pro aktualizaci vzdálené větve.
Pokud byl úkol zrušen, feature větev lze jednoduše smazat. Použijte git branch -d feature/name pro lokální větev a git push origin --delete feature/name pro vzdálenou. Všechny necommitované změny budou ztraceny.
V podstatě je to totéž. Různé týmy používají různé prefixy: feature/, task/, feat/. V mechanice Git není žádný rozdíl „ všechny jsou dočasné větve vytvořené z develop pro izolovaný vývoj.
Ano, to je povinná praxe. Větve po sloučení zaneřádí seznam referencí a mohou způsobit zmatek. Většina platforem (GitHub, GitLab) nabízí smazání větve ihned po merge PR a lokální větve se mažou příkazem git branch -d.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také