Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Сервисы Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022
Visual Studio 2019 | Visual Studio 2022
Подсказка
Вы можете использовать ИИ, чтобы помочь с задачами Azure DevOps. См. статью "Включение AI-ассистента в сервере MCP Azure DevOps", чтобы начать.
Git автоматически поддерживает историю разработки в ветке, связывая каждый новый коммит с предыдущим коммитом. При слиянии одной ветви с другой история может усложниться. Например, слияние без быстрого перемещения объединяет линии различной разработки путем создания коммита слияния с несколькими предшественниками. И наоборот, перебазирование Git объединяет различные линии разработки без создания фиксации слияния, что приводит к более простой истории коммитов, но теряется информация о слиянии. Выбор типа слияния , скорее всего, зависит от того, хотите ли вы сохранить запись слияния или упростить журнал фиксации.
В этой статье обсуждается, когда следует использовать перебазировку вместо слияния без быстрого продвижения, а также предоставляет инструкции по выполнению следующих действий:
- Перебазируйте вашу локальную ветку
- Форсированная отправка локальной ветки после перебазирования
- Интерактивная перебазация для сквоша локальных фиксаций
Общие сведения о рабочем процессе Git см. в руководстве по Azure Repos Git.
Предпосылки
| Категория | Требования |
|---|---|
| доступ к проекту | Член проекта. |
| Разрешения | — Просмотр кода в частных проектах: по крайней мере базовый доступ. — Клонирование или участие в работе с кодом в частных проектах: член группы безопасности Contributors или наличие соответствующих разрешений в проекте. — Задайте разрешения ветви или репозитория: управление разрешениями для ветви или репозитория. — Настройте политики ветви, проверки состояния или измените ветку по умолчанию: требуется разрешение Изменение политик для репозитория или ветви либо членство в группе безопасности Администраторы проекта. — Импорт репозитория: член группы безопасности администраторов проектов или разрешение на уровне проекта Git Создать репозиторий, установленное в Разрешить. Дополнительные сведения см. в разделе "Настройка разрешений репозитория Git". |
| Services | Репозитории включены. |
| Инструменты | Необязательно. Используйте az repos команды: Azure DevOps CLI. |
| Категория | Требования |
|---|---|
| доступ к проекту | Член проекта. |
| Разрешения | — Просмотр кода: по крайней мере базовый доступ. — Клонирование или внесение изменений в код: член группы безопасности Contributors или обладание соответствующими разрешениями в проекте. |
| Services | Репозитории включены. |
Перебазируйте вашу локальную ветку
Git rebase интегрирует коммиты из исходной ветви в вашу текущую локальную ветвь (целевая ветвь). Исходная ветвь остается неизменной. Для сравнения на следующей схеме показаны перебаза Git и другие типы слияний.
Git rebase изменяет порядок коммитов в целевой ветке так, чтобы она содержала все коммиты исходной ветки, после чего следуют все коммиты целевой ветки с момента последнего общего коммита. Другой способ рассматривать это заключается в том, что перебазировка воспроизводит изменения в целевой ветви поверх истории исходной ветви. В частности, Git перебазирует последовательность существующих фиксаций целевой ветви, что не относится к другим стратегиям слияния. На предыдущей схеме коммит K' содержит те же изменения, что и K, но имеет новый идентификатор коммита, так как он ссылается обратно на коммит E вместо C.
Во время ребейза, если изменение в исходной ветви конфликтует с изменением в целевой ветви, Git предложит разрешить конфликт слияния. Вы можете разрешать конфликты при перебазировке таким же образом, как и при слиянии.
Перебаза и слияние без быстрого переадресации
Перебазирование Git приводит к более простому, но менее точному журналу фиксации, чем слияние без fast-forward, также известное как трехстороннее или настоящее слияние. Если требуется запись слияния в истории коммитов, используйте слияние без ускоренного продвижения.
Если вы являетесь единственным человеком, работающим над функцией или ветвью исправлений, рассмотрите возможность использования повторной базы для периодической интеграции последних main рабочих ветвей в нее. Эта стратегия помогает гарантировать, что вы следите за последними работами других пользователей и быстро устраняете возникающие конфликты слияния. При перебазировке вы реализуете новую функцию на основе последней main работы ветки, что помогает поддерживать линейную историю коммитов.
Для получения дополнительной информации о Git rebase и когда его использовать см. в разделе Rebase vs merge.
Перебазировать и принудительно отправить рекомендации
Если вы обнулили локальную ветвь, которую ранее отправили, а затем снова выполните команду Git push по умолчанию, отправка завершится ошибкой. Команда отправки Git по умолчанию применяет быстрое слияние для интеграции локальной ветви в удаленную ветвь. Эта команда завершится ошибкой после повторной базы, так как перебаза изменяет последовательность существующих фиксаций в локальной целевой ветви, поэтому она больше не соответствует журналу его удаленного аналога. В этом сценарии принудительное принудительное выполнение будет выполнено успешно, перезаписав удаленную ветвь.
Git rebase и force push — мощные инструменты, но имейте в виду следующие рекомендации при принятии решений об их использовании:
- Не пересылайте локальную ветвь, которая была отправлена и предоставлена другим пользователям, если вы не уверены, что никто не использует общую ветвь. После перебазы локальная ветвь больше не будет соответствовать истории этой удаленной ветви.
- Не принудительно нажимайте на удаленную ветвь, которая используется другими пользователями, так как их локальная версия удаленной ветви больше не будет соответствовать обновленной журналу удаленной ветви.
- Ваша команда должна согласовать сценарии использования для ребейза и принудительной отправки.
Подсказка
Для процесса совместной проверки используйте пул-реквест, чтобы объединить новую работу в ветку по умолчанию удаленного репозитория.
Как изменить базу
- 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 .
В окне репозитория Git щелкните правой кнопкой мыши целевую ветвь и выберите "Проверить".
Щелкните правой кнопкой мыши
исходную ветвь и выберите Перебазировать .целевую ветвь на исходную ветвь Visual Studio отобразит сообщение подтверждения после успешного перебазирования.
Если ребейз остановлен из-за конфликтов слияния, Visual Studio уведомит вас. Можно либо устранить конфликты, либо отменить ребейз и вернуться в состояние до ребейза.
Форсированная отправка локальной ветки после перебазирования
Если вы перенаправили локальную ветвь, которая была отправлена ранее, последующий push-запрос Git по умолчанию завершится ошибкой. Вместо этого можно принудительно отправить локальную ветвь для перезаписи своего удаленного аналога, чтобы их журналы фиксации соответствовали.
Предупреждение
Никогда не принудительно толкать ветвь, над которыми работают другие. Для получения дополнительной информации см. руководство по перебазированию и принудительному пушу.
Чтобы выполнить принудительный push в Visual Studio, сначала необходимо включить параметр принудительной отправки.
Перейдите в Инструменты>Параметры>Управление исходным кодом>Глобальные настройки Git.
Выберите параметр "Включить push--force-with-lease ".
Флаг --force-with-lease команды Git push безопаснее флага --force, потому что он не перезаписывает удалённую ветвь с коммитами, которые не интегрированы в локальную ветвь, которую вы принудительно отправляете.
- Visual Studio 2022 год
- Visual Studio 2019 — меню Git
- Visual Studio 2019 — Team Explorer
- Командная строка Git
В окне Изменения в Git нажмите кнопку, чтобы отправить коммит.
Кроме того, вы можете выбрать "Отправить" в меню Git .
Если операция отправки Git по умолчанию завершается ошибкой, Visual Studio запускает диалоговое окно Ошибка Git-Push. Выберите Force Push.
Visual Studio отобразит сообщение подтверждения после успешной отправки.
Интерактивная перебазация для сквоша локальных фиксаций
Как правило, работая над новой функцией в локальной фича-ветке, вы создаёте несколько коммитов. Когда вы будете готовы внести новую функциональность, вам может потребоваться объединить эти коммиты в один, чтобы упростить историю коммитов. Вы можете использовать интерактивную перебазу для объединения нескольких фиксаций в одну фиксацию.
- Visual Studio 2022 год
- Visual Studio 2019 — меню Git
- Visual Studio 2019 — Team Explorer
- Командная строка Git
Visual Studio 2022 не поддерживает интерактивное перебазирование. Вместо этого используйте командную строку Git.
Замечание
Пользователи Azure DevOps могут сжать и объединить, чтобы сократить журнал фиксаций тематической ветки во время пулл-реквеста.