Uppdatera kod med hämtning, sammanslagning och hämtning
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Visual Studio 2019 | Visual Studio 2022
När det finns flera deltagare i ett projekt bör du hålla din lokala Git-lagringsplats uppdaterad genom att ladda ned och integrera arbete som andra har laddat upp till projektets fjärrdatabas. Dessa Git-kommandon uppdaterar din lokala lagringsplats:
- Git fetch laddar ned alla nya incheckningar som andra har laddat upp till fjärrplatsen. Fjärrspårningsgrenarna i den lokala lagringsplatsens cache uppdateras – lokala grenar förblir oförändrade.
- Git-sammanslagning integrerar incheckningar från en eller flera källgrenar i en målgren.
- Git-ombaser integrerar incheckningar från en källgren i en målgren, men använder en annan strategi än Git-sammanslagning.
- Git Pull utför en hämtning och sedan en sammanslagning eller ombasering för att integrera hämtade incheckningar i din aktuella lokala gren.
Visual Studio använder en delmängd av dessa Git-kommandon när du synkroniserar din lokala lagringsplats med en fjärransluten lagringsplats.
En översikt över Git-arbetsflödet finns i Självstudie om Azure Repos Git.
Den här artikeln innehåller procedurer för följande uppgifter:
- Ladda ned ändringar med hämtning
- Uppdatera grenar med sammanslagning eller ombasering
- Ladda ned ändringar och uppdatera grenar med pull
Ladda ned ändringar med hämtning
Git fetch laddar ned fjärrgrenens incheckningar och refererade filobjekt som inte finns på din lokala lagringsplats och uppdaterar fjärrspårningsgrenarna i den lokala lagringsplatsens cacheminne. Fjärrspårningsgrenar är lokalt cachelagrade skrivskyddade kopior av fjärrgrenar och är inte dina lokala grenar. Git Fetch uppdaterar inte dina lokala grenar. Om till exempel en fjärrdatabas som har en origin
bugfix3
gren, uppdaterar Git fetch fjärrspårningsgrenen med namnet origin/bugfix3
och inte din lokala bugfix3
gren. Du kan använda fjärrspårningsgrenar för att:
- Jämför en fjärrspårningsgren med en lokal gren för att granska hämtade ändringar.
- Slå samman en fjärrspårningsgren till en lokal gren.
- Skapa en ny lokal gren från en fjärrspårningsgren.
Visual Studio 2022 tillhandahåller en Git-versionskontroll med hjälp av Git-menyn , Git-ändringar och snabbmenyer i Solution Explorer. Visual Studio 2019 version 16.8 erbjuder även Användargränssnittet för Team Explorer Git. Mer information finns på fliken Visual Studio 2019 – Team Explorer .
I fönstret Git-ändringar väljer du Hämta. Välj sedan utgående/inkommande för att öppna Fönstret Git-lagringsplats .
Du kan också välja Hämta på Git-menyn.
I fönstret Git-lagringsplats visas hämtade incheckningar i avsnittet Inkommande . Välj en hämtad incheckning för att se listan över ändrade filer i incheckningen. Välj en ändrad fil för att se en diff-vy över ändrat innehåll.
Dricks
Fetch tar inte bort fjärrspårningsgrenar i din lokala lagringsplatscachen som inte längre har en fjärrmotsvarighet. Så här konfigurerar du Visual Studio för att rensa inaktuella fjärrspårningsgrenar under en hämtning:
- Välj Verktyg Alternativ>>Källkontroll>Git Global Inställningar.
- Ange prune-fjärrgrenarna under hämtningsalternativet till
True
.
Efter en Git-hämtning kan du jämföra en lokal gren med motsvarande fjärrspårningsgren för att se vad som har ändrats på fjärrgrenen. Om du bestämmer dig för att uppdatera din aktuella lokala gren med hämtade ändringar kan du utföra en Git-sammanslagning eller en ombasering. Eller så kan du köra Git Pull, som kombinerar en Git-hämtning med en Git-koppling eller en ombasering. Både Git-sammanslagning och Git-ombasering uppdaterar en målgren genom att tillämpa incheckningar från en källgren på den. Git-sammanslagning och Git-ombasering använder dock olika strategier. Mer information finns i Uppdatera grenar med sammanslagning eller ombasering och När du ska ombaseras jämfört med sammanslagning.
Uppdatera grenar med sammanslagning eller ombasering
Git-sammanslagning och Git-ombasering integrerar incheckningar från en källgren i din aktuella lokala gren (målgren). Git-sammanslagning utför antingen en snabbsnabb eller en snabbsnabb koppling. Den snabbsnabba sammanfogningen kallas även för en trevägssammanslagning eller sann sammanslagning. Git-ombasering är en annan typ av sammanslagning. Dessa sammanslagningstyper visas i följande diagram.
Git-sammanslagning och Git-ombasering används i stor utsträckning i Git-arbetsflödet. När du arbetar med en lokal funktion eller en bugfix-gren är det vanligt att:
- Håll din lokala
main
gren aktuell med fjärrmotsvarigheten genom att regelbundet hämta och sammanfoga fjärrincheckningar. - Integrera lokala
main
grenuppdateringar i din lokala funktionsgren med hjälp av en ombasering eller sammanslagning. - Säkerhetskopiera ditt arbete på den lokala funktionsgrenen genom att skicka det till motsvarande fjärrgren.
- När funktionen är klar skapar du en pull-begäran för att sammanfoga fjärrfunktionsgrenen till fjärrgrenen
main
.
Den här metoden hjälper dig att:
- Håll dig medveten om andras senaste arbete som kan påverka ditt arbete.
- Lös omedelbart eventuella konflikter mellan ditt och andras arbete.
- Använd den nya funktionen ovanpå aktuellt projektinnehåll.
- Få en pull-begäran om granskning av ditt arbete.
Slå ihop
Om spetsen på målgrenen finns i källgrenen för Git-sammanslagning är standardsammanfogningstypen en snabbkoppling. Annars är standardsammanslagningstypen en snabbsnabb koppling.
En snabbsnabb Git-sammanslagning kan aldrig ha en sammanslagningskonflikt eftersom Git inte tillämpar en snabbkoppling om spetsen på målgrenen har avvikande från källgrenen. Som standard använder Git en snabbkoppling när det är möjligt. Git tillämpar till exempel en snabbspolning på en lokal gren som du bara uppdaterar genom att hämta från dess fjärrmotsvarighetsgren.
En Git-sammanslagning utan snabbsnabb vidarebefordran genererar en ny målgren som integrerar ändringar i källgrenen med ändringar i målgrenen. De tillämpliga ändringarna är de som görs efter den senaste incheckningen som är gemensam för båda grenarna. I föregående diagram är commit C den sista gemensamma incheckningen i båda grenarna. Om någon ändring av källgrenen står i konflikt med någon ändring av målgrenen uppmanar Git dig att lösa sammanslagningskonflikten. Sammanslagningsincheckningen (L) innehåller ändringarna för den integrerade källgrenen och målgrenen. Tipsen för käll- och målgrenen (K och E) är överordnade för sammanslagningsincheckningen. I grenens incheckningshistorik är en sammanslagningsincheckning en användbar markör för en sammanslagningsåtgärd och visar tydligt vilka grenar som sammanfogades.
Git-sammanslagning ändrar endast målgrenen – källgrenen förblir oförändrad. När du stöter på en eller flera sammanslagningskonflikter måste du lösa dem för att slutföra sammanfogningen. Eller så kan du avbryta sammanslagningsåtgärden och returnera målgrenen till dess tidigare tillstånd.
Mer information om sammanslagningsalternativ och strategier finns i Git-referenshandboken och Git-sammanslagningsstrategier.
Dricks
Om källgrenen är en fjärrspårningsgren kontrollerar du att grenen är uppdaterad genom att köra en Git-hämtning före sammanfogningen.
Välj Git > Hantera grenar i menyraden för att öppna fönstret Git-lagringsplats .
I fönstret Git-lagringsplats högerklickar du på målgrenen och väljer Checkout.
Högerklicka på källgrenen och välj Sammanfoga källgren> till <målgren>.<
Visual Studio visar ett bekräftelsemeddelande efter en lyckad sammanslagning.
Om sammanfogningen stoppas på grund av sammanslagningskonflikter meddelar Visual Studio dig. Du kan antingen lösa konflikterna eller avbryta sammanfogningen och återgå till försammanfogningstillståndet.
Rebase
Git återställer incheckningshistoriken för målgrenen så att den innehåller alla källgrens incheckningar, följt av alla incheckningar av målgrenar sedan den senaste gemensamma incheckningen. Ett annat sätt att visa det är att en Git-ombas spelar upp ändringarna i målgrenen ovanpå källgrenens historik. Om någon ändring av källgrenen står i konflikt med någon ändring av målgrenen uppmanar Git dig att lösa sammanslagningskonflikten. Git-ombasen skapar inte någon kopplingsincheckning. Git ändrar i synnerhet sekvensen för de befintliga incheckningarna för målgrenen, vilket inte är fallet för de andra sammanslagningsstrategierna. I föregående diagram innehåller commit K samma ändringar som K, men har ett nytt inchecknings-ID eftersom det länkar tillbaka till incheckningen E i stället för C.
Git ändrar endast målgrenen – källgrenen förblir oförändrad. När du stöter på en eller flera sammanslagningskonflikter måste du lösa dem för att slutföra ombasen. Eller så kan du avbryta ombaseringen och returnera målgrenen till dess tidigare tillstånd.
Om du är den enda som arbetar med din funktion eller bugfix-gren kan du överväga att använda Git-ombasering för att integrera nya main
grenincheckningar i den. Annars använder du Git-sammanslagning. Mer information om Git-ombasering och när du ska använda den finns i Tillämpa ändringar med rebase och Rebase vs merge.
Dricks
Om källgrenen är en fjärrspårningsgren kontrollerar du att grenen är uppdaterad genom att köra en Git-hämtning före ombasen.
Välj Git > Hantera grenar för att öppna fönstret Git-lagringsplats .
I fönstret Git-lagringsplats högerklickar du på målgrenen och väljer Checkout.
Högerklicka på källgrenen och välj Rebase target-branch> till <source-branch>.<
Visual Studio visar ett bekräftelsemeddelande efter en lyckad ombasering.
Om ombasen stoppas på grund av sammanslagningskonflikter meddelar Visual Studio dig. Du kan antingen lösa konflikterna eller avbryta ombasen och återgå till förbaseringstillståndet.
Ladda ned ändringar och uppdatera grenar med pull
Som standard kombinerar Git Pull en Git-hämtning och en Git-sammanslagning för att uppdatera din aktuella lokala gren från dess fjärrmotsvarighet. Om du vill kan Git Pull utföra en Git-rebase i stället för en Git-sammanslagning.
Till skillnad från Git-hämtning uppdaterar Git pull din aktuella lokala gren omedelbart efter nedladdning av nya incheckningar från fjärrplatsen. Använd Git Pull när du vet att du vill uppdatera din aktuella lokala gren direkt efter en Git-hämtning.
Dricks
Så här konfigurerar du Visual Studio för att ombaseras i stället för sammanslagning när du hämtar:
- Från Git-menyn går du till Verktygsalternativ>>Källkontroll>Git Global Inställningar.
- Ange alternativet Rebase local branch when pulling till
True
.
I fönstret Git-ändringar väljer du Hämta.
Du kan också välja Hämta från Git-menyn.
Ett bekräftelsemeddelande visas när pull-åtgärden är klar.
Om det uppstår konflikter under sammanslagningsdelen av pull-åtgärden meddelar Visual Studio dig. Du kan antingen lösa konflikterna eller avbryta sammanfogningen och återgå till försammanfogningstillståndet.
Kommentar
I Visual Studio utför Sync en Pull-överföring och sedan en push-överföring för att synkronisera en lokal gren och en fjärrgren. Mer information om Synkronisering finns i Använda git fetch, pull, push och sync för versionskontroll i Visual Studio.