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 originbugfix3 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 .

  1. I fönstret Git-ändringar väljer du Hämta. Välj sedan utgående/inkommande för att öppna Fönstret Git-lagringsplats .

    Skärmbild av länken Hämta knappar och Inkommande i fönstret Git-ändringar i Visual Studio 2019.

    Du kan också välja Hämta på Git-menyn.

    Skärmbild av alternativet Hämta på Git-menyn i Visual Studio 2019.

  2. 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.

    Skärmbild av Menyn Git-lagringsplats i Visual Studio 2019.

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.

Diagram som visar incheckningar före och efter när du använder sammanslagning och ombasering.

Git-sammanslagning och Git-ombaseringanvä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:

  1. Håll din lokala main gren aktuell med fjärrmotsvarigheten genom att regelbundet hämta och sammanfoga fjärrincheckningar.
  2. Integrera lokala main grenuppdateringar i din lokala funktionsgren med hjälp av en ombasering eller sammanslagning.
  3. Säkerhetskopiera ditt arbete på den lokala funktionsgrenen genom att skicka det till motsvarande fjärrgren.
  4. 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.

  1. Välj Git > Hantera grenar i menyraden för att öppna fönstret Git-lagringsplats .

    Skärmbild av alternativet Hantera grenar på Git-menyn i Visual Studio 2019.

  2. I fönstret Git-lagringsplats högerklickar du på målgrenen och väljer Checkout.

    Skärmbild av alternativet Checkout i Fönstret Git-lagringsplats i Visual Studio 2019.

  3. Högerklicka på källgrenen och välj Sammanfoga källgren> till <målgren>.<

    Skärmbild av alternativet Slå samman i Git-lagringsplatsens fönster i Visual Studio 2019.

  4. Visual Studio visar ett bekräftelsemeddelande efter en lyckad sammanslagning.

    Skärmbild av bekräftelsemeddelandet för sammanslagning i Git-lagringsplatsens fönster i Visual Studio 2019.

    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.

    Skärmbild av meddelandet om sammanslagningskonflikt i Fönstret Git-lagringsplats i Visual Studio 2019.

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.

  1. Välj Git > Hantera grenar för att öppna fönstret Git-lagringsplats .

    Skärmbild av alternativet Hantera grenar på Git-menyn i Visual Studio 2019.

  2. I fönstret Git-lagringsplats högerklickar du på målgrenen och väljer Checkout.

    Skärmbild av alternativet Checkout i snabbmenyn för grenen i Fönstret Git-lagringsplats i Visual Studio 2019.

  3. Högerklicka på källgrenen och välj Rebase target-branch> till <source-branch>.<

    Skärmbild av alternativet Rebase i snabbmenyn för grenen i Fönstret Git-lagringsplats i Visual Studio 2019.

  4. Visual Studio visar ett bekräftelsemeddelande efter en lyckad ombasering.

    Skärmbild av bekräftelsemeddelandet för ombasering i Git-lagringsplatsens fönster i Visual Studio 2019.

    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.

    Skärmbild av återbaseringskonfliktmeddelandet i Git-lagringsplatsens fönster i Visual Studio 2019.

Ladda ned ändringar och uppdatera grenar med pull

Som standard kombinerar Git Pull en Git-hämtningoch 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:

  1. Från Git-menyn går du till Verktygsalternativ>>Källkontroll>Git Global Inställningar.
  2. Ange alternativet Rebase local branch when pulling till True.
  1. I fönstret Git-ändringar väljer du Hämta.

    Skärmbild av knappen Dra i fönstret Git-ändringar i Visual Studio 2019.

    Du kan också välja Hämta från Git-menyn.

    Skärmbild av alternativet Pull i Git-menyn i Visual Studio 2019.

  2. Ett bekräftelsemeddelande visas när pull-åtgärden är klar.

    Skärmbild av pull-bekräftelsemeddelandet i fönstret Git-ändringar i Visual Studio 2019.

    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.

    Skärmbild av meddelandet om pull-konflikt i fönstret Git-ändringar i Visual Studio 2019.

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.

Nästa steg