Så använder du git fetch innan du integrerar ändringar

17 oktober 2026

Två Git-grafer visar commits. Överst en fjärrserver, nederst din dator. `git fetch` hämtar ändringar.

När en kollega har uppdaterat en gren och du vill se ändringarna utan att störa ditt pågående arbete är git fetch oftast ett tryggt första steg. Kommandot hämtar nya Git-objekt och uppdaterar referenser till fjärrens grenar, men det ändrar normalt inte din utcheckade gren; exakt vad som uppdateras beror på fjärrinställningarna.

Git-grafik visar hur `git fetch origin` uppdaterar din lokala `master` med nya commits från fjärrservern.

Hämta först, välj sedan hur ändringarna ska integreras

  • Hämtning: git fetch uppdaterar information om fjärrens grenar utan att automatiskt slå ihop dem med din lokala gren.
  • Granska: jämför din gren med exempelvis origin/main innan du väljer merge eller rebase.
  • Standardval: git fetch origin hämtar enligt fjärrens konfiguration, ofta flera grenar.
  • Städa: git fetch --prune origin tar bort lokala fjärrreferenser till grenar som raderats på servern.

Din lokala gren står still medan fjärrspåren uppdateras

Tänk på origin/main som en lokal anteckning om var fjärrens main-gren senast befann sig. När du hämtar uppdateras den anteckningen, medan din egen main och dina arbetsfiler normalt ligger kvar där de är. Jag tycker att den uppdelningen gör kommandot särskilt användbart när du vill inspektera andras ändringar innan du bestämmer dig.

Git hämtar de objekt och referenser som behövs för historiken och skriver information om hämtade referenser till .git/FETCH_HEAD. En remote-tracking branch, som origin/main, är alltså en lokal referens till fjärrens gren, inte en gren som någon annan direkt ändrar i din arbetskatalog. Git-dokumentationen för git-fetch beskriver hur fjärrreferenser och hämtade objekt hanteras.

Välj kommandot efter hur mycket du vill hämta

Om projektets fjärr heter origin räcker ofta det korta kommandot git fetch. Har du flera fjärrar, eller vill du begränsa hämtningen, ange namn eller gren uttryckligen.

Situation Kommando Vad det gör
Hämta enligt konfigurationen för en fjärr git fetch origin Hämtar de referenser som fjärrens fetch-inställning omfattar.
Hämta från alla konfigurerade fjärrar git fetch --all Hämtar från samtliga fjärrar som inte har undantag för detta.
Hämta en viss gren git fetch origin feature/checkout Begär uppdateringar för den angivna grenen.
Hämta och rensa bort gamla fjärrspår git fetch --prune origin Tar bort lokala remote-tracking-referenser för grenar som inte längre finns på fjärren.

En detalj som lätt missas är att en fjärrs fetch-konfiguration avgör vilka referenser som hämtas när du inte anger en gren. Med en explicit gren på kommandoraden styr den i stället bland annat mappningen till lokala fjärrspår. Det kan förklara varför ett kommando inte uppdaterar den gren du väntade dig.

Jämför innan du väljer merge eller rebase

Efter hämtningen kan du jämföra den lokala grenen med fjärrspåret. Till exempel visar git log --oneline main..origin/main de commits som finns på origin/main men ännu inte på din lokala main. Om du vill se filskillnader kan git diff main..origin/main ge en snabb överblick.

Ta ett typiskt fall: du arbetar lokalt på main, medan en kollega har lagt till två commits på fjärrens main. Efter git fetch origin visar jämförelsen två nya commits, men din lokala gren har inte flyttats. Då kan du välja git merge origin/main för att slå ihop historiken eller git rebase origin/main för att lägga dina lokala commits ovanpå fjärrens uppdatering. GitHubs guide till att hämta ändringar från ett fjärrarkiv skiljer också mellan hämtning och integrering.

En gammal gren kan finnas kvar trots att den raderats på servern

Raderar någon en gren på fjärren försvinner den lokala referensen inte nödvändigtvis vid nästa vanliga hämtning. Då kan git branch -r fortfarande visa ett gammalt namn, vilket ser ut som om grenen lever kvar fast den inte längre finns på servern.

Situation Trolig förklaring Gör så här
git branch -r visar en gren som raderats på fjärren Den lokala fjärrreferensen har inte rensats. Kör git fetch --prune origin och kontrollera listan igen.
Din lokala gren ändras inte efter hämtningen Fetch hämtar och uppdaterar fjärrspår, men integrerar inte automatiskt ändringarna i den lokala grenen. Granska jämförelsen och välj sedan merge eller rebase.
En väntad fjärrgren saknas efter hämtning Grenen kan saknas på fjärren eller ligga utanför fjärrens konfigurerade refspec. Kontrollera fjärrnamn och gren, exempelvis med git remote -v.

Prune tar bort lokala fjärrreferenser som inte längre motsvarar grenar på servern; det raderar inte dina lokala arbetsgrenar. Om du vill se vad som skulle hämtas utan att uppdatera referenserna kan du använda git fetch --dry-run origin.

Låt fetch vara kontrollpunkten före ändringen

En enkel tumregel fungerar i de flesta arbetsflöden: vill du först granska vad som hänt, kör git fetch; vill du hämta och direkt integrera ändringarna, välj git pull och kontrollera hur pull är konfigurerat. Pull utför en hämtning och följer sedan inställningarna för integrering, till exempel merge eller rebase.

När en webbplats eller ett digitalt projekt utvecklas tillsammans med andra minskar den här kontrollpunkten risken för överraskningar i den aktuella grenen. Hämta, jämför och välj sedan hur historiken ska gå vidare. Det är ett litet extra steg som ger dig beslutet tillbaka i händerna.

Vanliga frågor

Git hämtar objekt och uppdaterar fjärrreferenser enligt fjärrens fetch-konfiguration. Din utcheckade gren och arbetsfiler ändras normalt inte. Hämtad referensinformation skrivs också till .git/FETCH_HEAD.
Kör först git fetch origin och jämför sedan med git log --oneline main..origin/main. Kommandot visar commits på fjärrspåret som ännu inte finns på din lokala main. Använd git diff main..origin/main om du även vill granska filskillnader.
Efter att du granskat ändringarna kan du köra git merge origin/main för att slå ihop historiken. Alternativt kan du använda git rebase origin/main för att lägga dina lokala commits ovanpå fjärrens uppdatering. Fetch väljer inte automatiskt mellan dessa sätt att integrera.
Den lokala fjärrreferensen kan finnas kvar trots att grenen har raderats på servern. Kör git fetch --prune origin för att ta bort lokala fjärrreferenser som inte längre motsvarar grenar på fjärren. Det tar inte bort dina lokala arbetsgrenar.
Betygsätt artikeln

Genomsnitt: 0.0 / 5 · 0 betyg

Taggar

git merge fjärrgrenar rebase
Kommentarer (0)
Lägg till en kommentar