Konfliktlösning

En konflikt uppstår när ändringar görs i samma objekt på både arbetsytan och git-fjärrlagringsplatsen. När en konflikt inträffar är Git-statusen Konflikt och Incheckning inaktiverad.

Skärmbild av en rapport med en Git-status som säger konflikt.

När du väljer Uppdatera när det finns konflikter meddelar ett meddelande dig att du behöver lösa konflikterna innan du kan uppdatera.

Skärmbild av felmeddelande från fliken Källkontroll som informerar om konflikter.

Det finns tre sätt att lösa en konflikt:

Lösa konflikter i användargränssnittet

Välj Uppdatera alla om du vill se en lista över alla objekt som har konflikter. Du kan sedan välja vilken version som ska behållas för varje objekt. För varje objekt i konflikt kan du välja att acceptera inkommande ändringar från Git-lagringsplatsen eller behålla den aktuella versionen som finns på arbetsytan.

Skärmbild av användargränssnittet för att välja vilken version av ett objekt i konflikt som ska behållas.

  • Välj Acceptera inkommande ändringar för att åsidosätta ändringarna på arbetsytan. Ändringarna av arbetsytan går förlorade och Git-statusen ändras till synkroniserad om importen lyckas.

  • Välj Behåll aktuellt innehåll för att behålla den version som för närvarande finns på arbetsytan. När uppdateringen är klar blir Git-statusen icke-bekräftad eftersom ändringarna på arbetsytan ännu inte har checkats in på grenen.

Återgå till ett tidigare tillstånd

Du kan återställa antingen hela arbetsytan eller Git-grenen till senaste synkroniserade tillstånd. Om du återställer Git-grenen till en tidigare incheckning kan du fortfarande se de ändringar som gjorts i den osynkronerade grenen. Om du återställer arbetsytan förlorar du alla ändringar som gjorts i arbetsytan sedan den senaste incheckningen.

Om du vill återgå till det tidigare synkroniserade tillståndet utför du någon av följande åtgärder:

  • Använd kommandot Ångra för att returnera objekt i konflikt på arbetsytan till deras senast synkroniserade tillstånd.
  • Återgå till det senast synkroniserade tillståndet i Git med kommandot git revert i Azure DevOps.

Du kan också lösa konflikter genom att koppla från och återansluta arbetsytan. När du återansluter väljer du den riktning som du vill synkronisera. Observera dock att när du återansluter skrivs alla objekt i arbetsytan eller grenen över och inte bara de konfliktfyllda objekten. Den returnerar inte arbetsytan eller grenen till det senast synkroniserade tillståndet. I stället skriver den över allt innehåll på en plats med innehållet i den andra.

Lösa konflikter i git

Om du inte är säker på vilka ändringar som har gjorts och vilken version du ska välja och inte vill återgå till ett tidigare tillstånd kan du försöka lösa konflikten på Git-lagringsplatsen genom att skapa en ny gren, lösa konflikten i grenen och synkronisera den med den aktuella.

Kommentar

Endast en arbetsyteadministratör kan återansluta arbetsytan till den nya grenen.

  1. På kontrollpanelen Källa checkar du ut en ny gren med det senast synkroniserade gren-ID:t som visas längst ned på skärmen

    Skärmbild som visar hur du checkar ut en ny gren från källkontrollpanelen genom att välja nedåtpilen.

    Skärmbild av gren-ID-information som visas längst ned på skärmen.

    Det här steget skapar en ny gren från den konfliktdrabbade grenen med hjälp av det senast synkroniserade Git-tillståndet, innan ändringar gjordes som är i konflikt med dina ändringar. Du kan se dina ändringar på kontrollpanelen Källa, men det finns inget att uppdatera från Git-grenen. Utcheckningsgrenen behåller det aktuella arbetsytans tillstånd, så icke-bakåtkompatibla ändringar behålls när grenen ändras.

  2. Checka in ändringarna i den nya grenen. Den här nya grenen har nu de ändringar som du har gjort i objekten som är anslutna till en tidigare version av Git-grenen som inte är i konflikt med dina ändringar.

  3. Lös konflikterna mellan den ursprungliga grenen och den nya grenen i git.

  4. I git sammanfogar du den nya grenen till den ursprungliga grenen

  5. I Infrastruktur växlar du tillbaka arbetsytan till den ursprungliga grenen.