Aktualizowanie kodu przy użyciu pobierania, scalania i ściągania

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

Jeśli istnieje kilka współautorów projektu, zachowaj lokalne repozytorium Git zaktualizowane, pobierając i integrując pracę przekazaną przez inne osoby do repozytorium zdalnego projektu. Te polecenia git aktualizują lokalne repozytorium:

  • Usługa Git pobiera wszelkie nowe zatwierdzenia przekazane przez inne osoby do repozytorium zdalnego. Gałęzie śledzenia zdalnego w lokalnej pamięci podręcznej repozytorium są aktualizowane — gałęzie lokalne pozostają niezmienione.
  • Scalanie usługi Git integruje zatwierdzenia z co najmniej jednej gałęzi źródłowej z gałęzią docelową.
  • Baza danych Git integruje zatwierdzenia z gałęzi źródłowej z gałęzią docelową, ale używa innej strategii niż scalanie usługi Git.
  • Ściąganie usługi Git wykonuje pobieranie, a następnie scalanie lub ponowne bazy danych w celu zintegrowania pobranych zatwierdzeń z bieżącą gałęzią lokalną.

Program Visual Studio używa podzbioru tych poleceń Git podczas synchronizowania lokalnego repozytorium z repozytorium zdalnym.

Aby zapoznać się z omówieniem przepływu pracy usługi Git, zobacz Samouczek usługi Azure Repos Git.

Ten artykuł zawiera procedury dla następujących zadań:

  • Pobieranie zmian za pomocą pobierania
  • Aktualizowanie gałęzi za pomocą scalania lub ponownej bazy danych
  • Pobieranie zmian i aktualizowanie gałęzi za pomocą ściągania

Pobieranie zmian za pomocą pobierania

Narzędzie Git pobiera zatwierdzenia gałęzi zdalnej i przywoływaną obiekty plików, które nie istnieją w lokalnym repozytorium i aktualizuje gałęzie śledzenia zdalnego w lokalnej pamięci podręcznej repozytorium. Gałęzie śledzenia zdalnego są lokalnie buforowane kopiami gałęzi zdalnych tylko do odczytu i nie są gałęziami lokalnymi. Pobieranie usługi Git nie aktualizuje lokalnych gałęzi. Jeśli na przykład repozytorium zdalne wyznaczone przez origin gałąź ma bugfix3 gałąź, usługa Git fetch zaktualizuje gałąź zdalnego śledzenia o nazwie origin/bugfix3 , a nie gałąź lokalną bugfix3 . Możesz użyć gałęzi śledzenia zdalnego do:

  • Porównaj gałąź zdalnego śledzenia z gałęzią lokalną, aby przejrzeć pobrane zmiany.
  • Scal gałąź zdalnego śledzenia z gałęzią lokalną.
  • Utwórz nową gałąź lokalną na podstawie gałęzi zdalnego śledzenia.

Program Visual Studio 2022 zapewnia środowisko kontroli wersji usługi Git przy użyciu menu Git, zmian git i menu kontekstowych w Eksplorator rozwiązań. Program Visual Studio 2019 w wersji 16.8 oferuje również interfejs użytkownika narzędzia Team Explorer Git. Aby uzyskać więcej informacji, zobacz kartę Visual Studio 2019 — Team Explorer .

  1. W oknie Git Changes (Zmiany usługi Git) wybierz pozycję Fetch (Pobierz). Następnie wybierz pozycję wychodzące/przychodzące , aby otworzyć okno Repozytorium Git.

    Zrzut ekranu przedstawiający przyciski Pobierania i Link przychodzący w oknie Zmiany usługi Git programu Visual Studio 2019.

    Możesz również wybrać pozycję Pobierz z menu Git.

    Zrzut ekranu przedstawiający opcję Pobierz w menu Git w programie Visual Studio 2019.

  2. W oknie Repozytorium Git pobrane zatwierdzenia są wyświetlane w sekcji Przychodzące. Wybierz pobrane zatwierdzenie, aby wyświetlić listę zmienionych plików w tym zatwierdzeniu. Wybierz zmieniony plik, aby wyświetlić widok różnic zmienionej zawartości.

    Zrzut ekranu przedstawiający menu Repozytorium Git w programie Visual Studio 2019.

Napiwek

Pobieranie nie spowoduje usunięcia gałęzi zdalnego śledzenia w lokalnej pamięci podręcznej repozytorium, która nie ma już zdalnego odpowiednika. Aby skonfigurować program Visual Studio w celu oczyszczania nieaktualnych gałęzi śledzenia zdalnego podczas pobierania:

  • Wybierz pozycję Narzędzia>Opcje>Kontroli>źródła Globalne Ustawienia Git.
  • Ustaw opcję Przycinanie gałęzi zdalnych podczas pobierania na Truewartość .

Po pobraniu usługi Git można porównać gałąź lokalną z odpowiednią gałęzią śledzenia zdalnego, aby zobaczyć, co zmieniło się w gałęzi zdalnej. Jeśli zdecydujesz się zaktualizować bieżącą gałąź lokalną przy użyciu pobranych zmian, możesz wykonać scalanie lub ponowne bazy danych usługi Git. Możesz też uruchomić ściąganie usługi Git, które łączy pobieranie usługi Git z scalania lub ponownego tworzenia bazy danych usługi Git. Zarówno scalanie usługi Git, jak i baza danych Git aktualizują gałąź docelową przez zastosowanie do niej zatwierdzeń z gałęzi źródłowej. Jednak scalanie usługi Git i ponowne bazy danych Git używają różnych strategii. Aby uzyskać więcej informacji, zobacz Update branches with merge or rebase (Aktualizowanie gałęzi za pomocą scalania lub ponownej bazy danych) i When to rebase vs. merge (Kiedy przeprowadzić ponowną bazę danych a scalanie).

Aktualizowanie gałęzi za pomocą scalania lub ponownej bazy danych

Scalanie usługi Git i ponowne bazy danych Git integrują zatwierdzenia z gałęzi źródłowej z bieżącą gałęzią lokalną (gałąź docelowa). Scalanie usługi Git wykonuje szybkielub szybkie scalanie. Scalanie bez szybkiego przesyłania dalej jest również znane jako scalanie trzykierunkowe lub scalanie true . Baza danych Git to inny typ scalania. Te typy scalania przedstawiono na poniższym diagramie.

Diagram przedstawiający zatwierdzenia przed i po zatwierdzeniu podczas używania scalania i ponownej bazy danych.

Scalanie usługi Git i baza danych Git są szeroko używane w przepływie pracy usługi Git. Podczas pracy nad lokalną funkcją lub gałęzią poprawki usterek często zdarza się:

  1. Zachowaj bieżącą gałąź lokalną main ze swoim zdalnym odpowiednikiem, okresowo ściągając w celu pobrania i scalania zatwierdzeń zdalnych.
  2. Integrowanie aktualizacji gałęzi lokalnej main z lokalną gałęzią funkcji przy użyciu bazy danych lub scalania.
  3. Wykonaj kopię zapasową pracy w lokalnej gałęzi funkcji, wypychając ją do odpowiedniej gałęzi zdalnej.
  4. Po ukończeniu funkcji utwórz żądanie ściągnięcia, aby scalić zdalną gałąź funkcji z gałęzią zdalnąmain.

Takie podejście pomaga:

  • Bądź świadomy ostatnich prac innych osób, które mogą mieć wpływ na Twoją pracę.
  • Szybko rozwiąż wszelkie konflikty między twoją pracą a innymi osobami.
  • Zastosuj nową funkcję na podstawie aktualnej zawartości projektu.
  • Uzyskaj przegląd żądania ściągnięcia swojej pracy.

Scal

W przypadku scalania git, jeśli porada gałęzi docelowej istnieje w gałęzi źródłowej, domyślnym typem scalania będzie szybkie scalanie. W przeciwnym razie domyślnym typem scalania będzie scalanie bez szybkiego przesyłania dalej.

Szybkie scalanie git nigdy nie może mieć konfliktu scalania, ponieważ usługa Git nie zastosuje szybkiego scalania, jeśli porada gałęzi docelowej rozeszła się z gałęzi źródłowej. Domyślnie usługa Git używa szybkiego scalania zawsze, gdy jest to możliwe. Na przykład usługa Git zastosuje szybkie scalanie w gałęzi lokalnej, która zostanie zaktualizowana tylko przez ściągnięcie z zdalnej gałęzi odpowiednika.

Scalanie git bez szybkiego przekazywania generuje nową gałąź docelową "zatwierdzenie scalania", która integruje zmiany gałęzi źródłowej ze zmianami gałęzi docelowej. Odpowiednie zmiany są wprowadzane po ostatnim zatwierdzeniu, które jest wspólne dla obu gałęzi. Na powyższym diagramie zatwierdzenie C jest ostatnim wspólnym zatwierdzeniem w obu gałęziach. Jeśli jakakolwiek zmiana gałęzi źródłowej powoduje konflikt z dowolną zmianą gałęzi docelowej, usługa Git wyświetli monit o rozwiązanie konfliktu scalania. Zatwierdzenie scalania (L) zawiera zmiany zintegrowanej gałęzi źródłowej i gałęzi docelowej. Porady dotyczące gałęzi źródłowej i docelowej (K i E) są elementami nadrzędnymi zatwierdzenia scalania. W historii zatwierdzń gałęzi zatwierdzenie scalania jest przydatnym znacznikiem operacji scalania i wyraźnie pokazuje, które gałęzie zostały scalone.

Scalanie usługi Git modyfikuje tylko gałąź docelową — gałąź źródłowa pozostaje niezmieniona. W przypadku napotkania jednego lub większej liczby konfliktów scalania należy je rozwiązać, aby ukończyć scalanie. Możesz też anulować operację scalania i zwrócić gałąź docelową do poprzedniego stanu.

Aby uzyskać więcej informacji na temat opcji scalania i strategii, zobacz podręcznik dokumentacji usługi Git i strategie scalania Git.

Napiwek

Jeśli gałąź źródłowa jest gałęzią zdalnego śledzenia, upewnij się, że gałąź jest aktualna, uruchamiając pobieranie usługi Git przed scaleniem.

  1. Wybierz pozycję Git Manage Branches (Zarządzanie gałęziami usługi Git>) na pasku menu, aby otworzyć okno Repozytorium Git.

    Zrzut ekranu przedstawiający opcję Zarządzaj gałęziami w menu Git programu Visual Studio 2019.

  2. W oknie Repozytorium Git kliknij prawym przyciskiem myszy gałąź docelową i wybierz polecenie Wyewidencjonuj.

    Zrzut ekranu przedstawiający opcję Wyewidencjonuj w oknie Repozytorium Git programu Visual Studio 2019.

  3. Kliknij prawym przyciskiem myszy gałąź źródłową i wybierz polecenie Scal gałąź> źródłową w <gałąź> docelową.<

    Zrzut ekranu przedstawiający opcję Scal w oknie Repozytorium Git programu Visual Studio 2019.

  4. Program Visual Studio wyświetli komunikat potwierdzający po pomyślnym scaleniu.

    Zrzut ekranu przedstawiający komunikat potwierdzenia scalania w oknie Repozytorium Git programu Visual Studio 2019.

    Jeśli scalanie zostanie zatrzymane z powodu konfliktów scalania, program Visual Studio powiadomi Cię. Możesz rozwiązać konflikty lub anulować scalanie i powrócić do stanu wstępnego scalania.

    Zrzut ekranu przedstawiający komunikat powodujący konflikt scalania w oknie Repozytorium Git programu Visual Studio 2019.

Rebase

Usługa Git rebase ponownie sekwencjonuje historię zatwierdzeń gałęzi docelowej, tak aby zawierała wszystkie zatwierdzenia gałęzi źródłowej, a następnie wszystkie zatwierdzenia gałęzi docelowej od ostatniego wspólnego zatwierdzenia. Innym sposobem wyświetlenia jest to, że baza Git ponownie odtwarza zmiany w gałęzi docelowej na początku historii gałęzi źródłowej. Jeśli jakakolwiek zmiana gałęzi źródłowej powoduje konflikt z dowolną zmianą gałęzi docelowej, usługa Git wyświetli monit o rozwiązanie konfliktu scalania. Baza danych Git nie tworzy zatwierdzenia scalania. W szczególności baza danych Git zmienia sekwencję istniejących zatwierdzeń gałęzi docelowej, co nie jest w przypadku innych strategii scalania. Na powyższym diagramie zatwierdzenie K zawiera te same zmiany co K, ale ma nowy identyfikator zatwierdzenia, ponieważ łączy się z powrotem z zatwierdzeniem E zamiast C.

Baza danych Git modyfikuje tylko gałąź docelową — gałąź źródłowa pozostaje niezmieniona. W przypadku napotkania jednego lub większej liczby konfliktów scalania należy je rozwiązać, aby ukończyć rebase. Możesz też anulować operację rebase i zwrócić gałąź docelową do poprzedniego stanu.

Jeśli jesteś jedyną osobą pracującą nad twoją funkcją lub gałęzią poprawki usterek, rozważ użycie bazy danych Git w celu zintegrowania z nim nowych main zatwierdzeń gałęzi. W przeciwnym razie użyj scalania git. Aby uzyskać więcej informacji na temat bazy danych Git i czasu jej używania, zobacz Stosowanie zmian za pomocą bazy danych i bazy danych rebase vs merge.

Napiwek

Jeśli gałąź źródłowa jest gałęzią zdalnego śledzenia, upewnij się, że gałąź jest aktualna, uruchamiając pobieranie usługi Git przed ponowną bazą danych.

  1. Wybierz pozycję Git Manage Branches (Zarządzanie gałęziami usługi Git>), aby otworzyć okno Repozytorium Git.

    Zrzut ekranu przedstawiający opcję Zarządzaj gałęziami w menu Git programu Visual Studio 2019.

  2. W oknie Repozytorium Git kliknij prawym przyciskiem myszy gałąź docelową i wybierz polecenie Wyewidencjonuj.

    Zrzut ekranu przedstawiający opcję Wyewidencjonuj w menu kontekstowym gałęzi w oknie Repozytorium Git programu Visual Studio 2019.

  3. Kliknij prawym przyciskiem myszy gałąź źródłową i wybierz polecenie Zmień bazę <docelową-gałąź na <gałąź>> źródłową.

    Zrzut ekranu przedstawiający opcję Rebase w menu kontekstowym gałęzi w oknie Repozytorium Git programu Visual Studio 2019.

  4. Program Visual Studio wyświetli komunikat potwierdzający po pomyślnym ponownym zdaniu bazy danych.

    Zrzut ekranu przedstawiający komunikat potwierdzenia bazy danych w oknie Repozytorium Git programu Visual Studio 2019.

    Jeśli baza bazy danych zostanie zatrzymana z powodu konfliktów scalania, program Visual Studio powiadomi Cię. Możesz rozwiązać konflikty lub anulować rebase i powrócić do stanu bazy wstępnej.

    Zrzut ekranu przedstawiający komunikat o konflikcie bazy danych w oknie Repozytorium Git programu Visual Studio 2019.

Pobieranie zmian i aktualizowanie gałęzi za pomocą ściągania

Domyślnie ściąganie usługi Git łączy pobieranie git i scalanie usługi Git, aby zaktualizować bieżącą gałąź lokalną ze swojego zdalnego odpowiednika. Opcjonalnie ściąganie usługi Git może wykonać rebase usługi Git zamiast scalania git.

W przeciwieństwie do pobierania usługi Git ściąganie git spowoduje zaktualizowanie bieżącej gałęzi lokalnej natychmiast po pobraniu nowych zatwierdzeń z repozytorium zdalnego. Użyj ściągania git, gdy wiesz, że chcesz zaktualizować bieżącą gałąź lokalną bezpośrednio po pobraniu usługi Git.

Napiwek

Aby skonfigurować program Visual Studio do ponownej bazy danych zamiast scalania podczas ściągania:

  1. Z menu Git przejdź do pozycji Narzędzia>Opcje>Kontroli>źródła Globalne Ustawienia Git.
  2. Ustaw lokalną gałąź Rebase podczas ściągania na wartość True.
  1. W oknie Git Changes (Zmiany usługi Git) wybierz pozycję Pull (Ściąganie).

    Zrzut ekranu przedstawiający przycisk Pull (Ściąganie) w oknie Git Changes (Zmiany usługi Git) programu Visual Studio 2019.

    Możesz również wybrać pozycję Ściąganie z menu Git.

    Zrzut ekranu przedstawiający opcję Ściąganie w menu Git w programie Visual Studio 2019.

  2. Po zakończeniu operacji ściągania zostanie wyświetlony komunikat potwierdzający.

    Zrzut ekranu przedstawiający komunikat potwierdzenia ściągnięcia w oknie Zmiany usługi Git w programie Visual Studio 2019.

    Jeśli podczas scalania części operacji ściągania występują konflikty, program Visual Studio powiadomi Cię. Możesz rozwiązać konflikty lub anulować scalanie i powrócić do stanu wstępnego scalania.

    Zrzut ekranu przedstawiający komunikat o konflikcie ściągnięcia w oknie Zmiany usługi Git w programie Visual Studio 2019.

Uwaga

W programie Visual Studio synchronizacja wykonuje ściąganie, a następnie wypychanie, aby zsynchronizować lokalną i zdalną gałąź. Aby uzyskać więcej informacji na temat synchronizacji, zobacz Use git fetch, pull, push and sync for version control in Visual Studio (Korzystanie z funkcji pobierania, ściągania, wypychania i synchronizacji w celu kontroli wersji w programie Visual Studio).

Następne kroki