Hotfix Branch — je typ větve v Git, určený pro nouzové opravy kritických chyb v produkčním prostředí. Na rozdíl od běžných větví se hotfix vytváří přímo z hlavní větve (main/master) a po opravě se slučuje současně do main a develop. Podle údajů Atlassian, 2025 se model Git Flow s hotfix větvemi používá v 67% týmů pracujících podle přísného harmonogramu vydání.
Hlavní body
Hotfix Branch — je dočasná větev v Git, která se vytváří pro operativní opravu kritických defektů v běžící produkci. Na rozdíl od feature větví, které se odvětvují z develop a žijí několik dní nebo týdnů, se hotfix vytváří z main/master a existuje přesně tak dlouho, jak je potřeba k opravě chyby.
Hlavním úkolem hotfix — minimalizovat čas mezi detekcí kritické chyby a její opravou v produkci. Tým nečeká na dokončení aktuálního sprintu nebo cyklu vydání, ale vydává záplatu okamžitě. To je zvláště důležité pro mobilní aplikace, kde kritická chyba může zablokovat uživatele a vést k jejich odchodu.
Podle údajů Google Play Console je průměrná doba moderování aktualizace v Google Play 2 až 24 hodin. Pro App Store může expresní revize trvat 1 až 4 hodiny. Hotfix větve umožňují připravit opravu ještě před dokončením moderování a nasadit ji ihned po schválení.
Proces hotfix se skládá ze tří kroků: vytvoření větve z main, provedení opravy a sloučení zpět do main a develop. Klíčový rozdíl oproti běžné opravě — hotfix se vždy slučuje do obou větví, aby se oprava neztratila při příštím vydání.
Tým by neměl do hotfix přidávat novou funkcionalitu nebo refaktorovat. Pouze cílená oprava, minimálně nezbytná k odstranění kritického problému. Jakákoli odchylka od tohoto pravidla zvyšuje riziko regrese a prodlužuje dobu vydání záplaty.
Hotfix je potřeba ve třech scénářích: kritická chyba blokuje uživatele (pád, ztráta dat), bezpečnostní zranitelnost vyžaduje okamžité uzavření nebo je rozbitá kritická obchodní logika (platby, autentizace). Pokud chyba není kritická — lze ji opravit v rámci běžného cyklu vydání přes develop.
Pro mobilní aplikace může hotfix také zahrnovat změny na serveru, pokud architektura umožňuje dálkové přepínání funkcí (feature flags). V takovém případě může být hotfix větev minimální nebo vůbec není potřeba, pokud se oprava provádí na straně serveru.
Ne všechny modely větvení podporují hotfix větve. Tradiční Git Flow předpokládá hotfix jako plnohodnotný typ větve, zatímco modernější přístupy (GitHub Flow, Trunk-based) řeší problém nouzových oprav jinak.
Git Flow — je jediný model, kde je hotfix vestavěným typem větve vedle feature a release. V Git Flow se hotfix vytváří z main a po dokončení se slučuje jak do main (s tagem verze), tak do develop. To zaručuje, že se oprava neztratí v příštím vydání.
| Charakteristika | Hotfix v Git Flow | Feature v Git Flow |
|---|---|---|
| Z které větve | main | develop |
| Kam se slučuje | main + develop | develop |
| Životnost | hodiny | dny / týdny |
| Obsah | pouze oprava chyby | nová funkcionalita |
GitHub Flow nepoužívá samostatný typ větve pro hotfix. Místo toho vývojář vytvoří běžnou feature větev z main, provede opravu a otevře Pull Request. Po revizi a CI kontrolách se větev sloučí do main a okamžitě nasadí. Výhoda — jednoduchost, nevýhoda — chybějící samostatný kanál pro naléhavé opravy.
Trunk-based vývoj řeší problém hotfix pomocí přímých commitů do main (pro kritické případy) s povinnou revizí dodatečně. Tento přístup vyžaduje vysokou disciplínu týmu a spolehlivé automatické testy, protože změny se dostávají do produkce okamžitě.
Vytvoření hotfix začíná přepnutím na hlavní větev a vytvořením nové větve s prefixem hotfix/. Podívejme se na proces krok za krokem na příkladu opravy kritické chyby v mobilní aplikaci.
První krok — přepněte se na main a ujistěte se, že je větev aktuální. Poté vytvořte hotfix větev s jasným názvem odrážejícím podstatu opravy.
# Přepněte se na main a načtěte nejnovější změny
git checkout main
git pull origin main
# Vytvořte hotfix větev
git checkout -b hotfix/crash-on-login
Po vytvoření větve lze provést opravu. Důležité: hotfix by měl obsahovat minimální počet změn. Nerefaktorujte kód ani nepřidávejte nové možnosti — pouze cílenou opravu, která odstraní problém.
Commit v hotfix by měl mít informativní zprávu, která jednoznačně popisuje problém a jeho řešení. Formát: typ(oblast): stručný popis + odkaz na úkol v trackeru.
# Přidejte změněné soubory
git add src/ui/login/LoginActivity.kt
# Vytvořte commit s popisem
git commit -m "fix(login): handle null intent on activity resume
Fixes CRASH-142: NullPointerException when LoginActivity
receives onNewIntent after being destroyed by system"
Zpráva commitu by měla obsahovat popis problému a odkaz na úkol. To usnadňuje vyhledávání v historii a pomáhá kolegům pochopit, co bylo opraveno a proč. U mobilních projektů se obvykle uvádí také verze aplikace, ve které byla chyba nalezena.
Poslední krok — slučte hotfix zpět do main (s tagem nové verze záplaty) a do develop (aby se oprava zachovala v příštím vydání). Nejprve se vytvoří sloučení do main s tagem, poté sloučení do develop.
# Slučte do main a vytvořte tag
git checkout main
git merge --no-ff hotfix/crash-on-login
git tag -a v2.3.1 -m "Hotfix: crash on login"
# Slučte do develop
git checkout develop
git merge --no-ff hotfix/crash-on-login
# Odešlete změny na server
git push origin main --tags
git push origin develop
Příznak --no-ff zaručuje vytvoření slučovacího commitu, i když by bylo možné hotfix aplikovat pomocí fast-forward. To zachovává informaci o tom, že byla provedena nouzová oprava, a usnadňuje analýzu historie v budoucnosti.
Hotfix se zásadně liší od feature a release větví účelem, životností a pravidly slučování. Porozumění těmto rozdílům je klíčové pro správnou organizaci Git procesů v týmu.
Feature větev je určena pro novou funkcionalitu. Žije od několika dní do několika týdnů, vytváří se z develop a slučuje se zpět do develop. Feature může obsahovat mnoho commitů, včetně experimentálních, které se později komprimují pomocí squash nebo rebase.
Release větev připravuje vydání k publikaci. Vytváří se z develop, opravují se v ní chyby nalezené během stabilizace a nepřijímá novou funkcionalitu. Po dokončení se release slučuje do main (s tagem) a develop.
Hotfix se vytváří a slučuje přímo s main, obchází develop (i když se po opravě synchronizuje i s develop). Obsahuje minimální počet změn a existuje minimální dobu. Pokud lze feature nebo release odložit do dalšího cyklu, hotfix — nikoli.
Pro mobilní vývoj je tento rozdíl obzvláště důležitý: App Store a Google Play umožňují vydávat záplaty odděleně od hlavních vydání. Hotfix větev zajišťuje proces, při kterém se vydání záplaty nemísí s nedokončenými funkcemi.
Chyby při práci s hotfix mohou anulovat výhody nouzové opravy. Podívejme se na pět nejčastějších problémů, které vznikají v týmech používajících Git Flow.
Každá z těchto chyb vede ke zpoždění vydání záplaty nebo k výskytu nových problémů v produkci. Týmy by měly stanovit pravidla pro práci s hotfix v CONTRIBUTING.md a automatizovat je pomocí CI/CD kontrol.
Často kladené otázky
Hotfix opravuje kritickou chybu v produkci a vytváří se z main, zatímco běžná oprava chyby opravuje chybu v develop a bude zahrnuta do příštího plánovaného vydání. Hotfix vyžaduje okamžité vydání verze záplaty.
Ano, hotfix lze vytvořit v jakémkoli modelu větvení. V GitHub Flow se k tomu používá běžná feature větev z main s následným Merge přes Pull Request. V Trunk-based — přímý commit do main s povinnou revizí dodatečně.
Žádoucí, ale je povolena zrychlená revize. Pro kritické chyby lze použít mechanismus „approve after merge“ — hotfix se nejprve sloučí a revize se provádí dodatečně. Důležité je stanovit takový postup v pravidlech týmu.
Formát: hotfix/stručný-popis-problému. Například: hotfix/null-pointer-auth, hotfix/crash-on-payment. Název by měl být srozumitelný všem členům týmu a nejlépe by měl obsahovat číslo úkolu v trackeru.
Vyřešte konflikt při slučování do develop stejně jako při běžném merge. Pokud je konflikt významný — pravděpodobně v develop proběhly změny ovlivňující stejnou oblast. V tomto případě je důležité se ujistit, že oprava správně funguje s novým kódem.
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é