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 Git pokazuje Konflikt, a zatwierdzanie jest wyłączone.

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

Gdy wybierzesz Aktualizuj, gdy pojawią się konflikty, widzisz przycisk Rozwiąż konflikty .

Zrzut ekranu przedstawiający komunikat o błędzie z zakładki systemu kontroli wersji, informujący o konfliktach.

Istnieją trzy sposoby rozwiązywania konfliktu:

Rozwiązywanie konfliktów w interfejsie użytkownika

Wybierz Rozwiąż konflikty , aby zobaczyć listę wszystkich elementów zawierających 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ć, którą wersję konfliktowego elementu zachować.

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

Notatka

Akceptowanie zmian przychodzących spowoduje zastąpienie bieżącego elementu w obszarze roboczym.

  • Wybierz Zachowaj bieżącą zawartość, aby zachować wersję aktualnie w obszarze roboczym. Po zakończeniu aktualizacji stan usługi Git pokazuje niezatwierdzone zmiany, ponieważ zmiany w obszarze roboczym nie zostały jeszcze zatwierdzone w gałęzi.

  • Możesz też otworzyć okno porównania i zatwierdzania zmian, aby porównać różne wersje konfliktowego przedmiotu obok siebie. Przeglądanie zmian w ten sposób pomaga zdecydować, którą wersję zachować, zanim rozwiążesz konflikt.

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 commitu, nadal możesz zobaczyć zmiany wprowadzone w niesynchronizowanej wersji. Jeśli przywrócisz obszar roboczy, utracisz wszystkie zmiany wprowadzone w obszarze roboczym od momentu ostatniego zatwierdzenia.

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

  • Użyj polecenia Cofnij, aby zwrócić elementy będące w konflikcie w obszarze roboczym do ich ostatniego zsynchronizowanego stanu.
  • 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 ponowne nawiązanie połączenia spowoduje nadpisanie wszystkich elementów w obszarze roboczym lub gałęzi, a nie tylko tych, które mają 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.

Notatka

Domyślnie przełączanie gałęzi Git połączonego obszaru roboczego (lub wyewidencjonowanie nowej gałęzi) jest ograniczone do administratorów obszaru roboczego. Jednak administrator obszaru roboczego może włączyć ustawienie dla danego obszaru roboczego Zezwalaj użytkownikom z co najmniej rolą Współautora na zmianę gałęzi Git, aby przekazać uprawnienie do przełączania gałęzi współautorom lub członkom. Aby uzyskać więcej informacji, zobacz Łączenie obszaru roboczego z repozytorium Git.

  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 kontroli wersji, ale nie ma nic do zaktualizowania w 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, które wprowadziłeś w elementach połączonych z wcześniejszą wersją gałęzi Git, niepowodujące konfliktów z twoimi zmianami.

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

  4. W systemie git scalaj nową gałąź z oryginalną gałęzią

  5. W Fabric, przełącz obszar roboczy z powrotem do oryginalnej gałęzi.