Udostępnij za pośrednictwem


Rozwiązywanie konfliktów

Konflikt występuje, gdy zmiany są wprowadzane do tego samego elementu zarówno w obszarze roboczym, jak i w zdalnym repozytorium Git. W przypadku wystąpienia konfliktu stan usługi Git oznacza, że konflikt i zatwierdzenie jest wyłączone.

Zrzut ekranu przedstawiający raport ze stanem usługi Git z informacją o konflikcie.

Po wybraniu pozycji Aktualizuj w przypadku konfliktów zostanie wyświetlony komunikat z powiadomieniem o konieczności rozwiązania konfliktów, zanim będzie można je zaktualizować.

Zrzut ekranu przedstawiający komunikat o błędzie z karty kontroli źródła informujący o konfliktach.

Istnieją trzy sposoby rozwiązywania konfliktu:

Rozwiązywanie konfliktów w interfejsie użytkownika

Wybierz pozycję Aktualizuj wszystko , aby wyświetlić listę wszystkich elementów, które mają konflikty. Następnie możesz wybrać wersję, która ma być zachowana dla każdego elementu. Dla każdego elementu powodującego konflikt można zaakceptować zmiany przychodzące z repozytorium Git lub zachować bieżącą wersję w obszarze roboczym.

Zrzut ekranu przedstawiający interfejs użytkownika, aby wybrać wersję elementu powodującego konflikt.

  • Wybierz pozycję Zaakceptuj zmiany przychodzące, aby zastąpić zmiany w obszarze roboczym. Zmiany obszaru roboczego zostaną utracone, a stan usługi Git zmieni się na zsynchronizowany , jeśli importowanie zakończy się pomyślnie.

  • Wybierz pozycję Zachowaj bieżącą zawartość , aby zachować wersję aktualnie w obszarze roboczym. Po zakończeniu aktualizacji stan usługi Git staje się niezatwierdzonymi zmianami , ponieważ zmiany w obszarze roboczym nie są jeszcze zatwierdzane w gałęzi.

Przywróć poprzedni stan

Możesz przywrócić cały obszar roboczy lub gałąź Git do stanu ostatniej synchronizacji. Jeśli przywrócisz gałąź Git do poprzedniego zatwierdzenia, nadal możesz zobaczyć zmiany wprowadzone w niezsynchronowanej gałęzi. Jeśli przywrócisz obszar roboczy, utracisz wszystkie zmiany wprowadzone w obszarze roboczym od czasu ostatniego zatwierdzenia.

Aby przywrócić poprzedni stan synchronizacji, wykonaj jedną z następujących akcji:

  • Użyj polecenia Cofnij, aby zwrócić elementy powodujące konflikt w obszarze roboczym do stanu ostatniej synchronizacji.
  • Przywróć ostatni stan synchronizacji w usłudze Git przy użyciu git revert polecenia w usłudze Azure DevOps.

Możesz również rozwiązać konflikty, rozłączając i ponownie łącząc obszar roboczy. Po ponownym połączeniu wybierz kierunek synchronizacji. Należy jednak pamiętać, że podczas ponownego nawiązywania połączenia zastępuje wszystkie elementy w obszarze roboczym lub gałęzi, a nie tylko konflikty. Nie zwraca obszaru roboczego ani gałęzi do ostatniego stanu synchronizacji. Zamiast tego zastępuje całą zawartość w jednej lokalizacji zawartością drugiej.

Rozwiązywanie konfliktów w usłudze Git

Jeśli nie masz pewności, jakie zmiany zostały wprowadzone i która wersja ma zostać wybrana i nie chcesz przywracać poprzedniego stanu, możesz spróbować rozwiązać konflikt w repozytorium Git, tworząc nową gałąź, rozwiązując konflikt w tej gałęzi i synchronizując go z bieżącym.

Uwaga

Tylko administrator obszaru roboczego może ponownie połączyć obszar roboczy z nową gałęzią.

  1. W panelu sterowania Źródło wyewidencjonuj nową gałąź przy użyciu ostatniego zsynchronizowanego identyfikatora gałęzi widocznego u dołu ekranu

    Zrzut ekranu przedstawiający sposób wyewidencjonowania nowej gałęzi z panelu sterowania źródła, wybierając strzałkę w dół.

    Zrzut ekranu przedstawiający informacje o identyfikatorze gałęzi wyświetlane w dolnej części ekranu.

    Ten krok tworzy nową gałąź z gałęzi powodującej konflikt przy użyciu ostatniego zsynchronizowanego stanu usługi Git, zanim zmiany zostaną wprowadzone, które powodują konflikt ze zmianami. Zmiany można zobaczyć w panelu sterowania Źródło, ale nie ma nic do zaktualizowania z gałęzi Git. Gałąź wyewidencjonowania zachowuje bieżący stan obszaru roboczego, więc niezatwierdzone zmiany są zachowywane podczas zmieniania gałęzi.

  2. Zatwierdź zmiany w nowej gałęzi. Ta nowa gałąź zawiera teraz zmiany wprowadzone w elementach połączonych z starszą wersją gałęzi Git, które nie powodują konfliktu ze zmianami.

  3. W usłudze git rozwiąż konflikty między gałęzią oryginalną a nową gałęzią.

  4. W usłudze git scal nową gałąź z oryginalną gałęzią

  5. W obszarze Sieć szkieletowa przełącz obszar roboczy z powrotem do oryginalnej gałęzi.