Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Visual Studio 2019 | Visual Studio 2022
Если есть несколько участников проекта, обновляйте локальный репозиторий Git, скачивая и интегрируя изменения, которые другие отправили в удаленный репозиторий проекта. Эти команды Git обновляют локальный репозиторий:
- Git fetch загружает любые новые коммиты, отправленные другими пользователями в удаленный репозиторий. Ветви удаленного отслеживания в локальном кэше репозитория обновляются. Локальные ветви остаются неизменными.
- Git merge интегрирует коммиты из одного или нескольких источников в целевую ветвь.
- Git rebase интегрирует фиксации из исходной ветви в целевую ветвь, но использует другую стратегию, чем слияние Git.
- Git pull выполняет команду fetch и затем слияние или перебазирование для интеграции полученных коммитов в вашу текущую локальную ветвь.
Visual Studio использует подмножество этих команд Git при синхронизации локального репозитория с удаленным репозиторием.
Для обзора рабочего процесса Git см. руководство по использованию Azure Repos Git.
В этой статье приведены процедуры для следующих задач:
- Загрузка изменений с fetch
- Обновление ветвей с слиянием или перемещением
- Скачивание изменений и обновление ветвей с использованием pull
Загрузка изменений с использованием fetch
Git fetch загружает фиксации удалённых ветвей и объекты файлов, на которые ссылаются и которые отсутствуют в вашем локальном репозитории, и обновляет удалённые отслеживаемые ветви в локальном кэше репозитория. Ветви удаленного отслеживания — это локально кэшированные только для чтения копии удаленных ветвей и не являются вашими локальными ветвями. Команда git fetch не обновляет ваши локальные ветки. Например, если в удаленном репозитории, обозначенном origin
, есть ветвь bugfix3
, Git fetch обновит ветвь удаленного отслеживания под названием origin/bugfix3
, а не вашу локальную ветвь bugfix3
. Для этого можно использовать ветви удаленного отслеживания:
- Сравните ветвь удаленного отслеживания с локальной ветвью, чтобы просмотреть внесенные изменения.
- Слияние ветви удаленного отслеживания в локальную ветвь.
- Создайте локальную ветвь из ветви удаленного отслеживания.
- Visual Studio 2022
- Visual Studio 2019 — меню Git
- Visual Studio 2019 — Team Explorer
- Командная строка Git
Visual Studio 2022 предоставляет интерфейс управления версиями Git с помощью меню Git, изменений Git и контекстных меню в Обозреватель решений. Visual Studio 2019 версии 16.8 также предлагает пользовательский интерфейс Team Explorer Git. Дополнительные сведения см. на вкладке Visual Studio 2019 — Team Explorer .
В окне «Изменения Git» выберите «Получить». Затем выберите исходящие/входящие, чтобы открыть окно репозитория Git.
Вы также можете выбрать Fetch из меню Git.
В окне репозитория Git в разделе Входящие отображаются коммиты. Выберите полученную фиксацию, чтобы увидеть список измененных файлов в этой фиксации. Выберите измененный файл, чтобы просмотреть представление измененного содержимого.
Подсказка
Извлечение не удаляет ветви удаленного отслеживания в локальном кэше репозитория, у которых больше нет удаленного аналога. Чтобы настроить Visual Studio для удаления устаревших ветвей удаленного отслеживания во время Fetch:
- Выберите Средства>Параметры>Система Управления Версиями>Глобальные Настройки Git.
- Установите опцию Обрезка удалённых ветвей во время получения в
True
.
После Git fetch вы можете сравнить локальную ветвь с соответствующей отслеживаемой удаленной ветвью, чтобы узнать, что изменилось в удаленной ветви. Если вы решили обновить вашу текущую локальную ветвь с полученными изменениями, можно выполнить слияние или перебазирование Git. Вы также можете запустить Git pull, который объединяет извлечение Git с слиянием Git или перебазированием. Git merge и Git rebase обновляют целевую ветвь, применяя коммиты из исходной ветви к ней. Однако Git merge и Git rebase используют различные стратегии. Дополнительные сведения см. в разделе "Обновление ветвей" с слиянием или ребейзом, а также "Когда следует использовать ребейз вместо слияния".
Обновление ветвей с помощью слияния или повторной базы
Слияние Git и перебазирование Git объединяют фиксации из исходной ветви в вашу текущую локальную ветвь (целевую ветвь). Git merge выполняет либо fast-forward, либо no-fast-forward слияние. Слияние без перемотки также называется трехсторонним слиянием или настоящим слиянием. Git перебазировка — это другой тип слияния. Эти типы слияний показаны на следующей схеме.
Команды Git merge и Git rebase широко используются в рабочем процессеGit. При работе с локальной функцией или ветвью исправлений часто рекомендуется:
- Поддерживайте актуальность вашей локальной ветки
main
с её удалённой версией, периодически выполняя команду pull для получения и объединения изменений из удалённого репозитория. - Интегрируйте обновления локальной ветки
main
в вашу локальную функциональную ветку, используя rebase или слияние. - Создайте резервную копию работы в локальной ветви функций, отправкой ее в соответствующую удаленную ветвь.
- При завершении функционала создайте pull request, чтобы объединить свою ветвь удаленного функционала с удаленной ветвью
main
.
Этот подход поможет вам:
- Будьте в курсе недавних работ других пользователей, которые могут повлиять на вашу работу.
- Быстро устраните любые конфликты между вашей работой и другими людьми.
- Примените новую функцию к содержимому проекта up-to-date.
- Получите пулл-реквест с рецензией на вашу работу.
Слияние
Для слияния в Git, если конец целевой ветки находится в исходной ветке, тип слияния по умолчанию будет проходным слиянием. В противном случае тип слияния по умолчанию будет слиянием без быстрого продвижения вперед.
Быстрое слияние Git никогда не может иметь конфликт слияния, так как Git не будет применять быстрое слияние, если конечная часть целевой ветви растянулась от исходной ветви. По умолчанию Git использует быстрое слияние, если это возможно. Например, Git будет применять быстрое слияние в локальной ветви, которая обновляется только путем извлечения из удаленной ветви-аналога.
Слияние Git без быстрого переадресации создает новую целевую ветвь "фиксация слияния", которая интегрирует изменения исходной ветви с изменениями целевой ветви. Применимые изменения — это изменения, внесенные после последней фиксации, обычной для обеих ветвей. На предыдущей схеме коммит C является последним общим коммитом в обеих ветвях. Если любое изменение исходной ветви конфликтует с любым изменением целевой ветви, Git предложит устранить конфликт слияния. Коммит слияния (L) содержит интегрированные изменения из исходной ветви и целевой ветви. Концы исходной и целевой ветви (K и E) являются родителями коммита слияния. В журнале коммитов вашей веткикоммит слияния является полезным маркером для операции слияния, четко показывая, какие ветки были объединены.
Слияние Git изменяет только целевую ветвь— исходная ветвь остается неизменной. При возникновении одного или нескольких конфликтов слияния их необходимо устранить, чтобы завершить слияние. Кроме того, можно отменить операцию слияния и вернуть целевую ветвь в предыдущее состояние.
Дополнительные сведения о вариантах и стратегиях слияния см. в справочнике по Git и в стратегиях слияния Git .
Подсказка
Если исходная ветвь является удалённой отслеживаемой ветвью, убедитесь, что ветвь up-to-date, выполнив git fetch перед слиянием.
- Visual Studio 2022
- Visual Studio 2019 — меню Git
- Visual Studio 2019 — Team Explorer
- Командная строка Git
Выберите "Управление ветвями Git>" в строке меню, чтобы открыть окно репозитория Git.
В окне репозитория Git щелкните правой кнопкой мыши целевую ветвь и выберите "Проверить".
Щелкните правой кнопкой мыши исходную ветвь и выберите >"Объединить <исходную ветвь" в <целевую ветвь>.
Visual Studio отобразит сообщение подтверждения после успешного слияния.
Если слияние остановлено из-за конфликтов слияния, Visual Studio уведомит вас. Можно либо устранить конфликты, либо отменить слияние и вернуться в состояние предварительного слияния.
Ребейз
Git перебазирование перестраивает историю фиксаций целевой ветви, чтобы она содержала все фиксации исходной ветви, а затем все фиксации целевой ветви с момента последней общей фиксации. Другой способ интерпретации заключается в том, что Git rebase повторяет изменения в вашей целевой ветке поверх истории исходной ветви. Если любое изменение исходной ветви конфликтует с любым изменением целевой ветви, Git предложит устранить конфликт слияния. Git rebase не создает коммит слияния. В частности, Git rebase изменяет последовательность существующих фиксаций целевой ветви, чего не происходит с другими стратегиями слияния. На предыдущей схеме фиксация K содержит те же изменения, что и K, но имеет новый идентификатор фиксации, так как он ссылается обратно на фиксацию E вместо C.
Git rebase изменяет только целевую ветвь— исходная ветвь остается неизменной. При возникновении одного или нескольких конфликтов слияния их необходимо устранить, чтобы завершить процесс перебазирования. Кроме того, можно отменить операцию перебазы и вернуть целевую ветвь в предыдущее состояние.
Если вы единственный человек, работающий над функцией или веткой исправлений, рассмотрите возможность использования перебазирования Git для интеграции новых коммитов ветки main
в нее. В противном случае используйте команду Git merge. Для получения дополнительной информации о перебазировании в Git и его использовании, см. разделы «Применение изменений с помощью перебазирования» и «Перебазирование против слияния».
Подсказка
Если исходная ветвь является удаленной отслеживаемой ветвью, убедитесь, что ветвь up-to-date, выполнив команду git fetch перед ребейзом.
- Visual Studio 2022
- Visual Studio 2019 — меню Git
- Visual Studio 2019 — Team Explorer
- Командная строка Git
Выберите "Управление ветвями Git > " , чтобы открыть окно репозитория Git .
В окне репозитория Git щелкните правой кнопкой мыши целевую ветвь и выберите "Проверить".
Щелкните правой кнопкой мыши на исходной ветви и выберите "Перебазировать <целевую ветвь> на <исходную ветвь>.
Visual Studio отобразит сообщение о подтверждении после успешного перебазирования.
Если rebase остановлен из-за конфликтов слияния, Visual Studio уведомит вас. Можно либо устранить конфликты, либо отменить ребейз и вернуться в состояние до него.
Загрузить изменения и обновить ветви с помощью операции pull
По умолчанию Git pull объединяет Git fetch и Git merge для обновления вашей текущей локальной ветки с удаленного репозитория. При желании команда Git pull может выполнять Git перебазирование вместо слияния Git.
В отличие от Git fetch, команда Git pull обновит вашу текущую локальную ветвь сразу после загрузки новых коммитов из удаленного репозитория. Когда вы знаете, что хотите обновить текущую локальную ветвь сразу после выполнения git fetch, используйте git pull.
Подсказка
Чтобы настроить Visual Studio для перебазирования вместо слияния при Pull:
- В меню Git перейдите в раздел> "Параметры>управления версиями>" Git Global Settings.
- Установите параметр Rebase локальной ветви при извлечении в
True
.
- Visual Studio 2022
- Visual Studio 2019 — меню Git
- Visual Studio 2019 — Team Explorer
- Командная строка Git
В окне "Изменения Git" нажмите кнопку "Вытягивание".
Вы также можете выбрать Pull в меню Git.
Сообщение подтверждения отображается после завершения операции вытягивания.
Если во время операции слияния возникают конфликты, Visual Studio уведомит вас. Можно либо устранить конфликты, либо отменить слияние и вернуться в состояние предварительного слияния.
Примечание.
В Visual Studio Sync выполняет Pull, а затем Push для синхронизации локальной и удаленной ветви. Дополнительные сведения о синхронизации см. в разделе "Использование команд извлечения, получения, отправки и синхронизации для управления версиями в Visual Studio".