Rozwiązywanie konfliktów Kontrola wersji serwera Team Foundation
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Visual Studio 2019 | Visual Studio 2022
Zaletą korzystania z Kontrola wersji serwera Team Foundation (TFVC) do zarządzania plikami jest to, że kilka osób może pracować współbieżnie w pliku. Jedną z wad jest to, że czasami należy rozwiązać konflikty, zanim będzie można uzyskać, zaewidencjonować, usunąć, scalić lub wycofać pliki.
Chociaż może to być frustrujące, aby napotkać konflikty, system udostępnia informacje i narzędzia ułatwiające zrozumienie i rozwiązywanie konfliktów.
Konflikty z wiersza polecenia można również rozwiązać przy użyciu polecenia Rozwiąż.
Napiwek
Jeśli twój zespół musi współpracować w celu rozwiązania dużej liczby konfliktów, na przykład po operacji scalania w dużej bazie kodu, publiczny obszar roboczy na udostępnionej maszynie deweloperów może pomóc. Aby uzyskać więcej informacji, zobacz Tworzenie i praca z obszarami roboczymi.
Rozwiązywanie konfliktów
Aby rozwiązać konflikty, możesz użyć okna Rozwiązywanie konfliktów programu Visual Studio, aby rozwiązać konflikty, które cię blokują. Aby otworzyć okno, wybierz pozycję Akcje>Rozwiąż konflikty na stronie Oczekujące zmiany w programie Team Explorer.
Domyślnie w oknie są wyświetlane tylko konflikty spowodowane przez ostatnią próbę operacji. Gdy okno jest w tym stanie, zostanie wyświetlony komunikat rozpoczynający się: Zastosowany filtr ścieżki. Aby wyświetlić wszystkie konflikty w obszarze roboczym, wybierz pozycję Pobierz wszystkie konflikty. Zostanie wyświetlony komunikat rozpoczynający się od: <N> Konflikty .
Jeśli wiele czasu minęło od czasu wprowadzenia zmian w plikach w obszarze roboczym, mogły wystąpić nowe konflikty. Aby odświeżyć okno Rozwiązywanie konfliktów , wybierz pozycję Odśwież.
Każdy konflikt zawiera informacje, a czasami linki, które mogą pomóc w jego rozwiązaniu. Aby uzyskać więcej informacji, możesz wybrać konflikt i wybrać jedną z następujących opcji:
Historia, aby wyświetlić historię pliku. Jeśli operacja, która spowodowała konflikt, to scalanie lub wycofywanie, możesz wybrać kontrolkę menu z prawej strony pozycji Historia , a następnie wybrać pozycję Historia źródła lub Historia docelowa. Aby uzyskać więcej informacji, zobacz Pobieranie historii elementu.
Porównaj lub wybierz strzałkę listy rozwijanej obok ikony, a następnie wybierz polecenie. Zostanie otwarte okno Różnice.
Dodaj adnotacje, aby wyświetlić szczegóły dotyczące wszystkich zmian wprowadzonych w najnowszej wersji pliku, w tym osób, które dokonały każdej zmiany i kiedy je wprowadzili. Zobacz Wyświetlanie zmian plików przy użyciu adnotacji.
AutoOdwiązanie wszystkich konfliktów
Domyślnie system automatycznie podejmuje próbę autowywiązania wszystkich konfliktów, chyba że wyłączysz tę opcję. Aby wyłączyć automatyczne autoodłatywanie wszystkie, wybierz pozycję Narzędzia>Opcje. W oknie dialogowym Opcje w obszarze Kontrola>źródła programu Visual Studio Team Foundation Server usuń zaznaczenie pozycji Spróbuj automatycznie rozwiązać konflikty po ich wygenerowaniu.
Możesz również ręcznie wybrać pozycję AutoWystrzymywanie wszystkich w oknie Rozwiązywanie konfliktów , a następnie wybrać jedną z następujących opcji:
Wszystkie typy konfliktów , jeśli chcesz, aby system próbował automatycznie rozwiązać konflikty przy użyciu wszystkich jego heurystyki.
Określone typy konfliktów , jeśli chcesz, aby system próbował rozwiązać konflikty, ale chcesz wykluczyć niektóre heurystyki.
Zostanie wyświetlone okno dialogowe Wybieranie konfliktów do rozwiązania . Sprawdź lub wyczyść opcje, które chcesz włączyć lub wyłączyć, a następnie wybierz pozycję AutoWysuń.
System próbuje automatycznie rozwiązać konflikty wyświetlane w oknie Oczekujące zmiany . Wszelkie konflikty, których system nie może rozwiązać, pozostają w oknie. Należy ręcznie rozwiązać te konflikty.
Omówienie opcji automatycznych
Można ograniczyć typy konfliktów automatycznie rozwiązywane przez opcję AutoResolve All . Po wybraniu pozycji AutoWystrzymywanie wszystkich, a następnie wybraniu pozycji Określone typy konfliktów zostanie wyświetlone okno dialogowe Wybieranie konfliktów do rozwiązania.
Przyczyna konfliktu
Przykład
Zaznaczenie pola wyboru
Zmiany zawartości powodujące konflikt zostały wprowadzone w każdej wersji pliku.
W wersji pliku po lewej stronie na początku dodano zero . Na końcu pliku po prawej stronie dodano trzy :
Konflikty z wszelkimi zmianami zawartości
Zmiany zawartości zostały wprowadzone podczas operacji pobierania lub sprawdzania, które są unikatowe dla obszaru roboczego, lub podczas operacji scalania lub wycofywania, które są unikatowe dla wersji docelowej.
Wpisy cztery i pięć zostały dodane do obszaru roboczego lub wersji docelowej:
Konflikty ze zmianami zawartości wprowadzanymi tylko w lokalnym obszarze roboczym lub gałęzi docelowej
Zmiany zawartości zostały wprowadzone podczas operacji pobierania lub sprawdzania, które są unikatowe dla serwera lub podczas operacji scalania lub wycofywania, które są unikatowe dla wersji źródłowej.
Wpisy cztery i pięć zostały dodane do serwera lub wersji źródłowej:
Konflikty ze zmianami zawartości wprowadzonych tylko w wersji serwera lub gałęzi źródłowej
Nazwa pliku została zmieniona na serwerze podczas operacji pobierania lub ewidencjonowania albo w gałęzi źródłowej podczas operacji scalania lub wycofywania.
Wyewidencjonowaliśmy plik o nazwie launch.cs i pracowaliśmy nad nim. W tym czasie ktoś inny zaewidencjonował zestaw zmian, który miał wpływ na ten sam plik. Ten zestaw zmian nie zmodyfikował zawartości pliku, ale zmienił nazwę pliku na start.cs.
Konflikty spowodowane zmianą nazwy pliku w wersji serwera lub gałęzi źródłowej
Wprowadzono typowe zmiany zawartości, które spowodowały identyczną zawartość w każdej wersji. Możesz też zmienić plik, zaewidencjonować go za pośrednictwem kompilacji zaewidencjonowanej bramowanej i wybrać opcję Zachowaj oczekujące zmiany lokalnie .
Zmiany w każdej wersji spowodowały identyczną zawartość pliku. Zmiany mogą dotyczyć zawartości w plikach, jak pokazano w poniższym przykładzie:
Konflikty spowodowane identyczną zmianą serwera i obszaru roboczego
Ta opcja rozwiązuje również konflikty spowodowane przez wszystkie inne operacje, na przykład zmiana nazwy, usuwanie, cofanie usuwania i rozgałęzienia, które powodują identyczne pliki.
Napiwek
Jeśli zaznaczysz to pole wyboru, po kontynuowaniu system rozwiąże te zmiany, pobierając wersję serwera do obszaru roboczego.
Automerge selected conflicts (Automerge selected conflicts)
Aby spróbować rozwiązać wybrane konflikty przy użyciu wszystkich poprzednich opcji automerge, wybierz co najmniej jeden konflikt, a następnie wybierz pozycję Automerge.
Napiwek
Możesz nacisnąć i przytrzymaj Ctrl lub Shift, aby zaznaczyć wiele konfliktów.
Ręczne rozwiązywanie wybranych konfliktów
Jeśli system nie może automatycznie rozwiązać konfliktu lub chcesz upewnić się, że rozumiesz, co się zmienia, musisz ręcznie rozwiązać konflikt. W każdym konflikcie system wyświetla akcje, które można wykonać, aby rozwiązać konflikt. Wyświetlane akcje zależą od typu konfliktu i operacji, która spowodowała konflikt.
Korzystanie z okna Scalanie
W przypadku konfliktu zmian zawartości powoduje konflikt, możesz wybrać pozycję Scal zmiany w narzędziu scalania. Zostanie wyświetlone okno Scalanie .
W oknie Scalanie można wykonywać następujące czynności:
- Wybierz układ okna: Widok pionowy, Widok poziomy lub Widok mieszany.
- Nawiguj między różnicami i konfliktami.
- Wybierz elementy z lewej i prawej wersji pliku, aby uwzględnić je w wynikach.
- Wpisz więcej zawartości w pliku w okienku Wynik .
- Wyświetl historię pliku. Aby uzyskać więcej informacji, zobacz Pobieranie historii elementu.
- Porównaj wersje pliku.
- Dodaj adnotację do pliku, aby zobaczyć, kto zmienił co. Aby uzyskać więcej informacji, zobacz Wyświetlanie zmian plików przy użyciu adnotacji.
Jeśli zawartość okienka Wynik jest zadowolona, wybierz pozycję Akceptuj scalanie.
Wynik rozwiązania konfliktu pojawia się w okienku Wynik .