Skip to main content

Сравнение ветвей в запросе на вытягивание

Запросы на вытягивание отображают объекты diff для сравнения изменений, внесенных в ветвь раздела, с базовой ветвью, с которой вы планируете объединить изменения.

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

Предлагаемые изменения можно просмотреть на вкладке "Измененные файлы". Снимок экрана: вкладки для запроса на вытягивание. Вкладка "Измененные файлы" выделена темно-оранжевым цветом.

Вместо того чтобы просматривать сами фиксации, вы можете просмотреть предлагаемые изменения в том виде, в котором они будут отображаться в файлах после объединения запроса на вытягивание. Файлы отображаются в алфавитном порядке на вкладке "Измененные файлы". Добавления к файлам отображаются зеленым цветом и предваряются знаком +, а удаляемое содержимое отображается красным цветом и предваряется знаком -.

Варианты просмотра изменений

Совет. Если вам трудно понять контекст изменений, можно нажать кнопку Просмотреть на вкладке "Измененные файлы", чтобы просмотреть весь файл с предлагаемыми изменениями.

Существует несколько вариантов просмотра изменений.

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

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

Снимок экрана: вкладка "Измененные файлы" для запроса на вытягивание. Меню "Представление диффа" описано в темно-оранжевый цвет.

Чтобы упростить просмотр изменений в большом запросе на вытягивание, можно отфильтровать различия, чтобы отобразить только выбранные типы файлов, показать файлы, для которых вы являетесь CODEOWNER, скрыть уже просмотренные файлы или скрыть удаленные файлы. Дополнительные сведения см. в разделе Фильтрация файлов в запросе на вытягивание.

Снимок экрана: раскрывающееся меню фильтра файлов. Меню развернуто и описано в темно-оранжевый цвет.

Причины, по которым изменения не отображаются

Трехточечные и двухточечные сравнения изменения Git

Есть два метода сравнения для команды git diff: двухточечный (git diff A..B) и трехточечный (git diff A...B). По умолчанию запросы на вытягивание вё GitHub показывают трехточечное сравнение.

Трехточечное сравнение изменений Git

Трехточечное сравнение показывает разницу между последней общей фиксацией обеих ветвей (база слияния) и последней версией тематической ветви.

Двухточечное сравнение изменений Git

Двухточечное сравнение показывает разницу между последним состоянием базовой ветви (например, main) и последней версией тематической ветки.

Чтобы просмотреть две ссылки на коммитиши в двухточечном сравнения на GitHub, можно изменить URL-адрес страницы "Сравнение изменений" репозитория. Дополнительные сведения см. в описании термина "committish" в глоссарии Git на сайте книги Pro Git.

Например, этот URL-адрес использует сокращенные коды SHA для сравнения фиксаций f75c570 и 3391dcc: https://github.com/github-linguist/linguist/compare/f75c570..3391dcc.

Двухточечное сравнение изменений сравнивает две ссылки на коммитиши Git, например SHA или OID (идентификаторы объектов), непосредственно друг с другом. На GitHub ссылки на коммитиши Git в двухточечном сравнении изменений должны отправляться в тот же репозиторий или его вилки.

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

Дополнительные сведения о командах Git для сравнения изменений см. в разделе Git diff options (Параметры сравнения изменений Git) на сайте книги Pro Git.

Сведения о трехточечном сравнении в GitHub

Так как трехточечное сравнение сравнивает с базой слияния, основное внимание уделяется тому, что добавляет запрос на вытягивание.

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

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

Частые слияния

Чтобы избежать путаницы, чаще объединяйте базовую ветвь (например, main) в ветвь раздела. При объединении базовой ветви различия, показываемые двухточечным и трехточечным сравнениями одинаковы. Мы рекомендуем объединять запрос на вытягивание как можно скорее. Это побуждает участников делать запросы на вытягивание меньшего размера, что является общей рекомендацией.

Дополнительные материалы