Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020
Visual Studio 2019 | Visual Studio 2022
När du sammanfogar eller ombaseras uppmanar du Git att integrera ändringar som gjorts på en gren med ändringar som gjorts på en annan. Ofta slutför Git en sammanslagning eller ombaserar automatiskt utan din hjälp. Men om Git upptäcker att en ändring som görs på en gren står i konflikt med en ändring som gjorts på en annan, uppmanas du att lösa konflikten. En sammanslagningskonflikt kan uppstå när de sammanfogade grenarna redigerar samma filrad på ett annat sätt, eller när en gren ändrar en fil och en annan gren tar bort den. Processen för att lösa sammanslagningskonflikter gäller för både Git-sammanslagning och ombasering.
Du kan lösa sammanslagningskonflikter i Visual Studio eller med hjälp av kommandoraden och valfri textredigerare.
En översikt över Git-arbetsflödet finns i Självstudie om Azure Repos Git.
Förutsättningar
| Kategori | Krav |
|---|---|
| Åtkomst till projekt | Medlem av ett -projekt. |
| behörigheter | Visa kod i privata projekt: Minst grundläggande åtkomst . – Klona eller bidra till kod i privata projekt: Medlem i Bidragsgivare säkerhetsgrupp eller projektets motsvarande behörigheter. – Ange behörigheter för gren eller lagringsplats: Hantera behörigheter behörigheter för grenen eller lagringsplatsen. – Ändra standardgren: Redigera principer behörigheter för lagringsplatsen. – Importera en lagringsplats: Medlem i Projektadministratörer säkerhetsgrupp eller Git-projektnivå Skapa lagringsplats behörighet inställd på Tillåt. Mer information finns i Ange Behörigheter för Git-lagringsplats. |
| Tjänster | Repos aktiverat. |
| Verktyg | Valfritt. Använd kommandona az repos: Azure DevOps CLI. |
Anmärkning
I offentliga projekt har användare med åtkomst på intressentnivå fullständig åtkomst till Azure Repos, inklusive att se, klona och bidra till kod.
| Kategori | Krav |
|---|---|
| Åtkomst till projekt | Medlem av ett -projekt. |
| behörigheter | – Visa kod: Minst Grundläggande åtkomst. – Klona eller bidra till kod: Medlem i Contributors säkerhetsgrupp eller motsvarande behörigheter i projektet. |
| Tjänster | Repos aktiverat. |
Förstå sammanslagningskonflikter
Git-sammanslagning eller ombasering integrerar incheckningar från en källgren i din aktuella lokala gren (målgren). Git merge utför antingen en snabbspolning eller en utan snabbspolning koppling. Den snabbsnabba sammanfogningen kallas även för en trevägssammanslagning eller sann sammanslagning. Git rebase är en annan typ av sammanslagning. Dessa sammanslagningstyper visas i följande diagram.
Diagram som visar commits före och efter när du använder Git merge och Git rebase.
Om spetsen på målgrenen finns i källgrenen för Git-sammanslagning är standardsammanfogningstypen en snabbkoppling. Annars är standard-sammanfogningstypen en icke-snabbsammanfogning.
En snabbspolning kan aldrig leda till en sammanslagningskonflikt eftersom Git inte tillämpar en snabbspolning om spetsen på målgrenen har avvikit från källgrenen. Som standard använder Git en snabbkoppling när det är möjligt. Git tillämpar till exempel en snabbkoppling på en lokal gren som du bara uppdaterar genom att hämta från sin fjärrmotsvarighet.
En no-fast-forward sammanslagning genererar en ny "sammanslagnings-commit" i målgrenen som integrerar ändringar i källgrenen med ändringar i målgrenen. De tillämpliga ändringarna är de som har gjorts efter den senaste commit som är gemensam för båda grenarna. I föregående diagram är commit C den sista gemensamma commit 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. Sammanfognings-commit (L) innehåller ändringarna från den integrerade källgrenen och målgrenen. Ändarna för käll- och målgrenen (K och E) är föräldrar till sammanslagningskommittén. I grenens commit-historik är en sammanfognings-commit en användbar markör för en sammanfogning och visar tydligt vilka grenar som sammanfogades.
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. I föregående diagram är commit C den sista gemensamma commit i båda grenarna. Ett annat sätt att visa det är att en 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. Precis som med en fast-forward skapar en rebase inte en sammanslagnings-commit. I synnerhet ändrar en rebase sekvensen för de befintliga commit för måletiketten, 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-sammanslagning och ombasering ä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 sammanslagningen eller ombaseras. Eller kan du avbryta operationen merge/rebase och återställa målgrenen till dess tidigare tillstånd.
Mer information om sammanslagningsalternativ och strategier finns i Git-referenshandboken och Git-sammanslagningsstrategier.
När du ska lösa sammanslagningskonflikter
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
maingren aktuell med fjärrmotsvarigheten genom att regelbundet hämta och sammanfoga fjärrincheckningar. - Integrera lokala
maingrenuppdateringar 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 request för att sammanfoga din funktionsgren med den fjärranslutna
maingrenen.
Genom att ofta integrera fjärrändringar i din lokala lagringsplats kan du vara medveten om andras senaste arbete och snabbt lösa eventuella sammanslagningskonflikter som uppstår.
Lösa sammanslagningskonflikter
Processen för att lösa sammanslagningskonflikter gäller för både Git-sammanslagning och Git-ombasering. Även om följande steg beskriver hur du löser sammanslagningskonflikter under en sammanslagning kan du på liknande sätt lösa sammanslagningskonflikter under en ombasering.
Tips/Råd
Om källgrenen är en fjärrspårningsgren kontrollerar du att grenen är up-to-date genom att köra en Git-hämtning före en sammanslagning. Eller kör git-pull-kommandot , som kombinerar en Git-hämtning med en Git-sammanslagning.
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 Grenar i Git-lagringsplatsen checkar du ut målgrenen. Högerklicka sedan på källgrenen och välj Sammanfoga <källgren> till <målgren>.
Visual Studio meddelar dig om Git stoppade sammanfogningen på grund av konflikter. I så fall kan du antingen lösa konflikterna eller avbryta sammanfogningen och återgå till tillståndet före sammanfogningen. I avsnittet Unmerged Changes i fönstret Git-ändringar visas filerna med sammanslagningskonflikter. För en fil med sammanslagningskonflikter i innehållet dubbelklickar du på filen för att öppna den i kopplingsredigeraren.
I kopplingsredigeraren visar fönstret Inkommande källgrensfilversionen, fönstret Aktuell visar målfilversionen för grenen och fönstret Resultat visar den resulterande sammanslagningsfilen. Om du vill tillämpa specifika ändringar av käll- eller målgrenen markerar du kryssrutan bredvid de motstridiga rader som du vill behålla. Du kan också redigera kopplingsfilen direkt i fönstret Resultat . Välj Acceptera sammanslagning när du har löst alla sammanslagningskonflikter i den aktuella filen. Upprepa det här steget för varje fil med innehållskonflikter.
För en fil som redigerades i en gren och togs bort i den andra högerklickar du på filen och väljer vilken grenåtgärd du vill använda.
I fönstret Git-ändringar anger du ett meddelande för kommittering och väljer Kommittera mellanlagrade för att slutföra sammanfogningen – efter att du har löst alla sammanslagningskonflikter för alla filer.