Main Branch (tidigare Master) — är huvudgrenen i Git som innehåller stabil produktionskod, redo för driftsättning. Varje commit i main motsvarar en releaseversion av projektet, och själva grenen är skyddad mot direkta ändringar och fungerar som den enda sanningskällan för hela teamet. Enligt GitHub, 2020 heter den nya standardgrenen sedan oktober 2020 main istället för master.
Huvudpunkter
Main Branch (eller Master — beroende på databasinställningar) — är standardgrenen som skapas vid initiering av varje Git-databas. Det är projektets huvudgren och innehåller kod redo för driftsättning i produktion.
Till skillnad från develop, där det dagliga arbetet med nya funktioner pågår, är main projektets skyltfönster. Varje kodversion i main har genomgått en fullständig cykel: utveckling i feature-gren, integration i develop, förberedelse av release i release-gren och slutlig testning. Först därefter kommer ändringarna in i main.
Nyckelprincip: main måste alltid vara stabil. Om ett fel upptäcks i main innebär det en akut hotfix som måste släppas utanför ordinarie schema. Därför skyddas main i professionella projekt mot oavsiktliga ändringar genom branch protection rules.
Enligt Git Book är main inte en speciell gren med särskilda egenskaper, utan en vanlig referens till en commit som enligt konvention anses vara huvudgrenen. Git gör inte skillnad mellan main och någon annan gren på systemnivå.
Historiskt sett hette standardgrenen i Git master. I juni 2020 uppmärksammade Black Lives Matter-rörelsen termerna master och slave inom IT-branschen. GitHub tillkännagav övergången till termen main för standardgrenen.
Sedan oktober 2020 skapas alla nya databaser på GitHub med grenen main. GitLab och Bitbucket har också implementerat stöd för main som standardnamn. Git 2.28 (juli 2020) lade till alternativet init.defaultBranch för att konfigurera standardgrenens namn.
Tekniskt sett är det en enkel operation att byta namn på en befintlig gren från master till main. Den största utmaningen är att uppdatera alla referenser i CI/CD-konfigurationer, dokumentation och utvecklares lokala databaser.
För att byta namn på en gren i en befintlig databas, kör:
# Lokal omdöpning av master till main
git branch -m master main
# Uppdatering av fjärrdatabasen
git push -u origin main
# Borttagning av gamla master på servern
git push origin --delete master
# Uppdatering av HEAD på servern
# (via GitHub webbgränssnitt: Settings → Branches → Default branch)
Git Flow och GitHub Flow definierar main-grenens roll olika. Valet av modell beror på teamets storlek, releasefrekvens och krav på kodstabilitet.
| Egenskap | Git Flow | GitHub Flow |
|---|---|---|
| Roll av main | Endast releaseversioner | Central utvecklingsgren |
| Ytterligare grenar | Develop, Release, Hotfix | Endast feature-grenar |
| Releasefrekvens | En gång var 1-4 vecka | Flera gånger om dagen |
| Komplexitet | Hög | Låg |
| När välja | Mobilappar med releasecykler | Webbtjänster med kontinuerlig driftsättning |
För mobilapplikationsutveckling är standarden Git Flow, eftersom publicering av appar i App Store och Google Play har fasta releasecykler. GitHub Flow passar bättre för webbprojekt med möjlighet till driftsättning flera gånger om dagen.
I GitHub Flow finns ingen develop-gren. Alla feature-grenar skapas direkt från main, och efter slutförande slås de samman via Pull Request. Varje sammanslagning i main utlöser automatiskt driftsättning till produktion. Denna modell kräver hög testautomatisering och teamdisciplin.
I GitHub Flow finns ingen develop-gren. Alla feature-grenar skapas direkt från main, och efter slutförande slås de samman via Pull Request. Varje sammanslagning i main utlöser automatiskt driftsättning till produktion. Denna modell kräver hög testautomatisering och teamdisciplin.
Branch protection för main — en obligatorisk inställning i varje kommersiellt projekt. Utan det kan en oavsiktlig push skicka ofullständig kod till produktion eller förstöra en fungerande applikation för alla användare.
Konfigurering av alla sex regler — standard för mobilprojekt med 10 000+ användare. För små projekt räcker de första tre reglerna.
Skyddsnivån för main beror på projektets omfattning. En startup kan klara sig med minimalt skydd, medan en enterprise-applikation kräver maximala begränsningar.
Taggning (tagging) — praxis att skapa namngivna referenser till specifika commits i main. Varje tagg motsvarar en version av applikationen som släppts till produktion. Detta möjliggör snabb växling till tidigare releaser för felsökning eller patch.
Standard för namngivning av taggar inom mobilutveckling — SemVer (Semantisk版本hantering): v1.2.3, där första numret är huvudversion (breaking changes), andra — mindre (nya funktioner), tredje — patch (korrigeringar).
En tagg skapas efter sammanslagning av release-grenen i main. Denna commit byggs sedan i CI/CD, signeras och skickas till appbutiken. Om ett fel upptäcks i taggen skapas en hotfix-gren från den taggen.
# Skapa annoterad releasetagg
git tag -a v2.4.1 -m "Release version 2.4.1"
# Skicka taggen till servern
git push origin v2.4.1
# Visa alla taggar i databasen
git tag -l "v2.*"
# Skapa hotfix-gren från specifik tagg
git checkout -b hotfix/crash-fix v2.4.1
Förståelse av grenhierarkin i Git Flow — grunden för korrekt organisation av samarbetsutveckling. Varje grenstyp har sin egen källa, syfte och sammanslagningsregler.
Viktig regel: feature slås aldrig samman direkt i main. feature → develop → release → main — korrekt sammanslagningskedja. Brott mot denna regel gör hela Git Flow-modellen meningslös.
Betrakta scenariot: teamet har slutfört förberedelserna av release v2.5.0. Release-grenen har kontrollerats och är redo för sammanslagning i main. Efter sammanslagning skapas taggen och releasen publiceras.
# Växla till main och uppdatera
git checkout main
git pull origin main
# Slå samman kontrollerad release-gren
git merge --no-ff release/2.5.0
# Skapa releasetagg
git tag -a v2.5.0 -m "Release 2.5.0 - Payment integration"
# Skicka main och taggen till servern
git push origin main --tags
Flaggan --no-ff (no fast-forward) garanterar skapandet av en merge-commit, även om sammanslagningen kunde ha utförts genom enkel förflyttning av pekaren. Detta bevarar informationen om att ändringarna kommer från release-grenen, vilket förenklar analysen av historiken.
Om ett kritiskt fel upptäcks i produktion skiljer sig processen från en vanlig release. Hotfix skapas från main, och efter korrigering slås den samman både i main och i develop.
Om ett kritiskt fel upptäcks i produktion skiljer sig processen från en vanlig release. Hotfix skapas från main, och efter korrigering slås den samman både i main och i develop.
# Skapa hotfix-gren från main
git checkout main
git checkout -b hotfix/2.5.1-crash-fix
# Korrigera och committa
git add src/fix/
git commit -m "Fix crash on login screen"
# Slå samman hotfix tillbaka till main
git checkout main
git merge --no-ff hotfix/2.5.1-crash-fix
git tag -a v2.5.1 -m "Hotfix 2.5.1"
git push origin main --tags
# Slå samman hotfix även till develop
git checkout develop
git merge --no-ff hotfix/2.5.1-crash-fix
git push origin develop
# Ta bort hotfix-grenen
git branch -d hotfix/2.5.1-crash-fix
Vanliga frågor
Tekniskt sett — ja, det är en vanlig referens till en commit. Men praktiskt — nej, eftersom main är standardgrenen och de flesta plattformar tillåter inte borttagning av en gren som är inställd som default branch. Istället för att ta bort, skapa en ny default branch och ta sedan bort den gamla.
Om felet inte är kritiskt, använd den vanliga processen: skapa en feature-gren från develop, åtgärda felet, genomgå kodgranskning och vänta på nästa releasecykel. Hotfix används endast för kritiska fel som blockerar användarnas arbete.
main — den lokala grenen på din dator. origin/main — lokal cache av den fjärrgrenens tillstånd på servern. Kommandot git fetch uppdaterar origin/main, medan git pull omedelbart slår samman ändringarna i din lokala main.
Använd git clone för att kopiera hela databasen till en ny katalog. Om du behöver ändra fjärr-URL, kör git remote set-url origin. För att ändra arbetskatalog utan att kopiera databasen, använd git worktree add.
Ja, även i ett team på två personer är skydd av main motiverat. En oavsiktlig push med fel kommando kan skriva över historiken. Minimalt skydd — förbud mot direkta push och PR-krav — tar 5 minuter att konfigurera och förhindrar timmar av dataåterställning.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också