Обновление кода с получением, слиянием и извлечением

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

Visual Studio 2019 | Visual Studio 2022

Если в проекте есть несколько участник, сохраните локальный репозиторий Git, скачав и интегрируя работу, которую другие пользователи отправили в удаленный репозиторий проекта. Эти команды Git обновляют локальный репозиторий:

  • Git извлекает новые фиксации, отправленные другими пользователями в удаленный репозиторий. Ветви удаленного отслеживания в локальном кэше репозитория обновляются. Локальные ветви остаются неизменными.
  • Слияние Git интегрирует фиксации из одной или нескольких исходных ветвей в целевую ветвь.
  • Git rebase интегрирует фиксации из исходной ветви в целевую ветвь, но использует другую стратегию, чем слияние Git.
  • Git pull выполняет получение, а затем слияние или перебазу для интеграции фиксаций в текущую локальную ветвь.

Visual Studio использует подмножество этих команд Git при синхронизации локального репозитория с удаленным репозиторием.

Общие сведения о рабочем процессе Git см . в руководстве по Azure Repos Git.

В этой статье приведены процедуры для следующих задач:

  • Скачивание изменений с получением
  • Обновление ветвей с помощью слияния или повторной базы
  • Скачивание изменений и обновление ветвей с помощью извлечения

Скачивание изменений с получением

Git извлекает фиксации удаленной ветви и ссылается на объекты файлов, которые не существуют в локальном репозитории, и обновляет ветви удаленного отслеживания в локальном кэше репозитория. Ветви удаленного отслеживания локально кэшируются только для чтения копии удаленных ветвей и не являются локальными ветвями. Получение Git не обновляет локальные ветви. Например, если удаленный репозиторий, назначенный origin ветвью bugfix3 , Git будет обновлять ветвь удаленного отслеживания, а origin/bugfix3 не локальную bugfix3 ветвь. Для этого можно использовать ветви удаленного отслеживания:

  • Сравните ветвь удаленного отслеживания с локальной ветвью, чтобы просмотреть внесенные изменения.
  • Слияние ветви удаленного отслеживания в локальную ветвь.
  • Создайте локальную ветвь из ветви удаленного отслеживания.

Visual Studio 2022 предоставляет интерфейс управления версиями Git с помощью меню Git, изменений Git и контекстных меню в Обозреватель решений. Visual Studio 2019 версии 16.8 также предлагает пользовательский интерфейс Team Обозреватель Git. Дополнительные сведения см. на вкладке Visual Studio 2019 — Team Обозреватель.

  1. В окне "Изменения Git" выберите "Получить". Затем выберите исходящие и входящие, чтобы открыть окно репозитория Git.

    Снимок экрана: кнопки получения и входящий канал в окне изменений Git Visual Studio 2019.

    Вы также можете выбрать выборку из меню Git.

    Снимок экрана: параметр получения в меню Git в Visual Studio 2019.

  2. В окне репозитория Git в разделе "Входящие" отображаются фиксации. Выберите извлекаемую фиксацию, чтобы просмотреть список измененных файлов в этой фиксации. Выберите измененный файл, чтобы просмотреть представление измененного содержимого.

    Снимок экрана: меню репозитория Git в Visual Studio 2019.

Совет

Извлечение не удаляет ветви удаленного отслеживания в локальном кэше репозитория, у которых больше нет удаленного аналога. Чтобы настроить Visual Studio для очистки устаревших ветвей удаленного отслеживания во время получения:

  • Выберите "Параметры>управления версиями>Git" Git Global Параметры.>
  • Задайте для удаленных ветвей Prune во время выбора параметра Trueполучения.

После получения Git можно сравнить локальную ветвь с соответствующей ветвью удаленного отслеживания, чтобы увидеть, что изменилось в удаленной ветви. Если вы решите обновить текущую локальную ветвь с помощью внесенных изменений, можно выполнить слияние или перебазу Git. Вы также можете запустить Git pull, который объединяет получение Git с слиянием Git или повторной базой данных. Слияние Git и перебаза Git обновляют целевую ветвь, применяя фиксации из исходной ветви к ней. Однако слияние Git и перебаза Git используют различные стратегии. Дополнительные сведения см. в разделе "Обновление ветвей" с слиянием или повторной базой данных, а также "При повторной базе и слиянием".

Обновление ветвей с помощью слияния или повторной базы

Слияние Git и ребаза Git интегрируют фиксации из исходной ветви в текущую локальную ветвь (целевая ветвь). Слияние Git выполняет либо быстрое перемещение вперед, либо слияние без быстрое перемещение вперед. Слияние без быстрое перемещение вперед также называется трехсторонным слиянием или истинным слиянием. Git rebase — это другой тип слияния. Эти типы слияний показаны на следующей схеме.

Схема, показывающая фиксации до и после фиксаций при использовании слияния и повторной базы данных.

Слияние Git и перебаза Git широко используются в рабочем процессе Git. При работе с локальной функцией или ветвью исправлений часто рекомендуется:

  1. main Сохраняйте текущую локальную ветвь с удаленным коллегой, периодически извлекая и объединяя удаленные фиксации.
  2. Интеграция обновлений локальной ветви в локальную main ветвь компонента с помощью повторной базы или слияния.
  3. Создайте резервную копию работы в локальной ветвь компонента, перенастроив ее в соответствующую удаленную ветвь.
  4. При завершении функции создайте запрос на вытягивание, чтобы объединить удаленные ветвь компонента в удаленную main ветвь.

Этот подход поможет вам:

  • Будьте в курсе недавних работ других пользователей, которые могут повлиять на вашу работу.
  • Быстро устраните любые конфликты между вашей работой и другими людьми.
  • Примените новую функцию к актуальному содержимому проекта.
  • Получите проверку запроса на вытягивание вашей работы.

Слияние

Для слияния Git, если подсказка целевой ветви существует в исходной ветви, тип слияния по умолчанию будет быстрое перемещение вперед слиянием. В противном случае тип слияния по умолчанию будет не быстрое перемещение вперед слиянием.

Слияние быстрое перемещение вперед Git никогда не может иметь конфликт слияния, так как Git не будет применять быстрое перемещение вперед слияние, если конечная часть целевой ветви не была удалена из исходной ветви. По умолчанию Git использует быстрое перемещение вперед слияние по возможности. Например, Git будет применять слияние быстрое перемещение вперед в локальной ветви, которая обновляется только путем извлечения из удаленной ветви-аналога.

Слияние без быстрое перемещение вперед Git создает новую целевую ветвь "фиксация слияния", которая интегрирует изменения исходной ветви с изменениями целевой ветви. Применимые изменения — это изменения, внесенные после последней фиксации, обычной для обеих ветвей. На предыдущей схеме фиксация C является последней общей фиксацией в обоих ветвях. Если любое изменение исходной ветви конфликтует с любым изменением целевой ветви, Git предложит разрешить конфликт слияния. Фиксация слияния (L) содержит изменения встроенной исходной ветви и целевой ветви. Подсказки исходной и целевой ветви (K и E) являются родителями фиксации слияния. В журнале фиксации ветви фиксация слияния является полезным маркером для операции слияния и четко показывает, какие ветви были объединены.

Слияние Git изменяет только целевую ветвь— исходная ветвь остается неизменной. При обнаружении одного или нескольких конфликт слияния необходимо разрешить их для завершения слияния. Кроме того, можно отменить операцию слияния и вернуть целевую ветвь в предыдущее состояние.

Дополнительные сведения о вариантах слияния и стратегиях см. в справочнике по Git и стратегиям слияния Git.

Совет

Если исходная ветвь является ветвью удаленного отслеживания, убедитесь, что ветвь обновлена, выполнив получение Git перед слиянием.

  1. Выберите "Управление ветвями Git>" в строке меню, чтобы открыть окно репозитория Git.

    Снимок экрана: параметр

  2. В окне репозитория Git щелкните правой кнопкой мыши целевую ветвь и выберите "Проверить".

    Снимок экрана: флажок

  3. Щелкните правой кнопкой мыши исходную ветвь и выберите "Объединить исходную ветвь" в <target-branch>>.<

    Снимок экрана: параметр слияния в окне репозитория Git Visual Studio 2019.

  4. Visual Studio отобразит сообщение подтверждения после успешного слияния.

    Снимок экрана: сообщение подтверждения слияния в окне репозитория Git Visual Studio 2019.

    Если слияние остановлено из-за конфликт слияния, Visual Studio уведомит вас. Можно либо устранить конфликты, либо отменить слияние и вернуться в состояние предварительного слияния.

    Снимок экрана: сообщение конфликт слияния в окне репозитория Git Visual Studio 2019.

Перемещение изменения из одной ветви в другую

Git rebase resequences журнал фиксации целевой ветви, чтобы он содержал все фиксации исходной ветви, а затем все фиксации целевой ветви с момента последней общей фиксации. Другой способ просмотра заключается в том, что ребаза Git переиграет изменения в целевой ветви поверх журнала исходной ветви. Если любое изменение исходной ветви конфликтует с любым изменением целевой ветви, Git предложит разрешить конфликт слияния. Git rebase не создает фиксацию слияния. В частности, Git перебазирует последовательность существующих фиксаций целевой ветви, что не относится к другим стратегиям слияния. На предыдущей схеме фиксация K содержит те же изменения, что и K, но имеет новый ИД фиксации, так как он ссылается обратно на фиксацию E вместо C.

Git rebase изменяет только целевую ветвь— исходная ветвь остается неизменной. При обнаружении одного или нескольких конфликт слияния необходимо разрешить их для завершения повторной базы. Кроме того, можно отменить операцию перебазы и вернуть целевую ветвь в предыдущее состояние.

Если вы единственный человек, работающий над функцией или ветвью исправлений, рассмотрите возможность использования повторной базы Git для интеграции новых main фиксаций ветвей в нее. В противном случае используйте слияние Git. Дополнительные сведения о повторной базе Git и ее использовании см. в разделе "Применение изменений с помощью повторной базы данных и повторной базы и слияния".

Совет

Если исходная ветвь является ветвью удаленного отслеживания, убедитесь, что ветвь обновлена, выполнив получение Git перед повторной базой.

  1. Выберите "Управление ветвями Git > " , чтобы открыть окно репозитория Git.

    Снимок экрана: параметр

  2. В окне репозитория Git щелкните правой кнопкой мыши целевую ветвь и выберите "Проверить".

    Снимок экрана: параметр

  3. Щелкните правой кнопкой мыши исходную ветвь и выберите "Перебазировать целевую ветвь>" в <исходной ветви>.<

    Снимок экрана: параметр Rebase в контекстном меню ветви в окне репозитория Git Visual Studio 2019.

  4. Visual Studio отобразит сообщение подтверждения после успешной перебазы.

    Снимок экрана: сообщение подтверждения повторной базы данных в окне репозитория Git Visual Studio 2019.

    Если перебаза остановлена из-за конфликт слияния, Visual Studio уведомит вас. Можно либо устранить конфликты, либо отменить перебазу и вернуться в состояние предварительной базы.

    Снимок экрана: сообщение о конфликте перебазы в окне репозитория Git Visual Studio 2019.

Скачивание изменений и обновление ветвей с помощью извлечения

По умолчанию Git pull объединяет получение Git и слияние Git для обновления текущей локальной ветви от удаленного аналога. При необходимости вытягивание Git может выполнять перебазу Git вместо слияния Git.

В отличие от получения Git, Git pull обновит текущую локальную ветвь сразу после скачивания новых фиксаций из удаленного репозитория. Используйте Git pull, когда вы знаете, что хотите обновить текущую локальную ветвь сразу после получения Git.

Совет

Чтобы настроить Visual Studio для повторной базы вместо слияния при вытягивании:

  1. В меню Git перейдите в раздел >"Параметры>управления версиями>" Git Global Параметры.
  2. Задайте локальную ветвь Rebase при извлечении параметра True.
  1. В окне "Изменения Git" нажмите кнопку "Вытягивание".

    Снимок экрана: кнопка

    Вы также можете выбрать "Вытягивание" в меню Git.

    Снимок экрана: параметр

  2. Сообщение подтверждения отображается после завершения операции вытягивания.

    Снимок экрана: сообщение подтверждения по запросу в окне изменений Git в Visual Studio 2019.

    Если во время операции слияния возникают конфликты, Visual Studio уведомит вас. Можно либо устранить конфликты, либо отменить слияние и вернуться в состояние предварительного слияния.

    Снимок экрана: сообщение о конфликте по запросу в окне изменений Git в Visual Studio 2019.

Примечание.

В Visual Studio синхронизация выполняет вытягивание, а затем push-запрос для синхронизации локальной и удаленной ветви. Дополнительные сведения о синхронизации см. в разделе "Использование извлечения, извлечения, отправки и синхронизации для управления версиями" в Visual Studio.

Следующие шаги