Hoppa till innehåll

Git-begrepp och standardgrenar

↑

CLI-exempel märkta Bash fungerar i Git Bash på Windows 10 och Windows 11 eller Bash på Linux, med Git installerat. Bash-tilldelningar som DEFAULT_BRANCH=main är kommandotolkens syntax; kör exemplen i Git Bash i stället för att klistra in dem i PowerShell eller Kommandotolken.

Git blir lättare när du skiljer på en lokal gren, ett fjärrrepository och en remote-tracking-referens. Varken Git eller en lagringstjänst kräver att standardgrenen heter main. Äldre projekt använder ofta master, och team kan välja andra namn.

Begrepp Betydelse
main / master Vanliga men helt vanliga grennamn. Projektet väljer sin egen standardgren.
origin Konventionellt fjärrnamn som vanligtvis skapas vid kloning. Det är ett alias, inte ett särskilt Git-kommando.
origin/main Lokal remote-tracking-referens till den senast hämtade positionen för main på origin. Den uppdateras inte automatiskt när andra pushar.
HEAD Referens till aktuell utcheckad commit, normalt via en lokal gren. Vid detached HEAD pekar den direkt på en commit.
upstream Kan betyda en grens tracking branch eller ett andra fjärrrepository, ofta originalprojektet i ett fork-arbetsflöde.
fetch Hämtar objekt och fjärrreferenser utan att integrera dem i arbetsgrenen.
pull Hämtar och integrerar ändringar enligt val för merge/rebase.
push Skickar commits och uppdaterar en servergren om du har behörighet.
merge Kombinerar historiker och kan skapa en merge-commit.
rebase Spelar upp commits på en annan bas och skapar nya commit-ID:n. Samordna innan du ändrar delad historik.

Öppna repositoryt och kontrollera Current Branch. På GitHub visas standardgrenen under repositoryts Settings → Branches. På GitLab kan den finnas i Settings → Repository om du har rätt behörighet. Att en gren visas i Desktop betyder inte automatiskt att den är standardgren.

Anta att GitLab använder master och fjärrrepositoryt heter origin. Kontrollera först fjärrinställningarna och säkra lokala ändringar:

Terminal window
DEFAULT_BRANCH=master # Verifiera på servern före användning.
git status --short --branch
git switch "$DEFAULT_BRANCH"
git fetch origin
git pull --ff-only origin "$DEFAULT_BRANCH"
git switch -c feature/42-tree-explorer

Samma exempel fungerar med main genom DEFAULT_BRANCH=main. Om fjärrrepositoryt heter något annat än origin använder du det namnet. Byt inte gren på chans när du har lokala ändringar; kontrollera git status först.

Varför origin/main skiljer sig från main

Section titled “Varför origin/main skiljer sig från main”

main är en lokal gren som kan flyttas när du gör commits. origin/main visar den senast hämtade positionen på fjärrservern. Om en kollega pushar till servern står din origin/main still tills du kör fetch. Även efter fetch kan din lokala main ligga efter tills du integrerar ändringarna.

git push -u origin feature/example ställer in vilken servergren den lokala grenen ska spåra. I ett fork-arbetsflöde kan upstream i stället vara namnet på det ursprungliga projektets fjärrrepository, medan origin pekar på din fork. Det är två olika typer av inställningar.

Kontrollfråga: Uppdateras din lokala master automatiskt när origin/master förändras efter fetch? Nej. Måste feature/x finnas på GitHub? Nej, den kan bara finnas lokalt.

Läs vidare om grenar, dagligt arbete och Git-referensen.