---
metadata:
  - name: generator
    content: Diplodoc Platform v5.57.3
alternate:
  - https://sourcecraft.dev/portal/docs/en/sourcecraft/operations/pr-work.md
  - https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/pr-work.md
  - href: ru/sourcecraft/operations/pr-work.md
    type: text/markdown
    title: Markdown version
  - href: ../../llms.txt
    type: text/markdown
    title: llms.txt
title: Как работать с предложением изменений в SourceCraft
description: Следуя данной инструкции, вы научитесь выполнять стандартные действия при работе с предложениями изменений в SourceCraft.
---
> **Documentation Index:** Fetch the complete configuration index at https://sourcecraft.dev/portal/docs/ru/llms.txt


# Работа с предложениями изменений в SourceCraft

<!-- source: ru/_includes/sourcecraft/pr-work-in-ui.md -->
Для работы с предложениями изменений в SourceCraft, в том числе для ревью, не требуется специально переходить в IDE на локальном компьютере, все действия можно выполнять в интерфейсе SourceCraft. Доступны [поиск и навигация по коду проекта](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/code-navigation.md), а также возможность [редактировать код](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/code-edit.md).
<!-- endsource: ru/_includes/sourcecraft/pr-work-in-ui.md -->

После того как предложение изменений было [создано и опубликовано](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/pr-create.md), вы можете:

* [Создать новую итерацию](#create-iteration).
* [Посмотреть изменения, вносимые в целевую ветку](#get-changes).
* [Оставить комментарий и запросить изменения](#leave-comment).
* [Предложить код и принять предложение](#code-suggestion).
* [Вынести резолюцию](#set-resolution).
* [Обновить ветку-источник](#update-source-branch).
* [Выполнить слияние с целевой веткой](#merge).
* [Отклонить предложение изменений](#discard).
* [Описать предложение изменений](#description).
* [Добавить метки](#add-labels).


## Создать новую итерацию {#create-iteration}

После того как предложение изменений было создано, каждая отправка изменений в удаленную ветку репозитория создает новую _итерацию_. Итерация включает в себя все коммиты, которые были сделаны перед выполнением команды `git push`.

Чтобы создать новую итерацию:
1. В той же ветке, из которой было создано предложение изменений, внесите новые изменения в файлы репозитория.
1. Внесите измененные файлы в индекс `git`, сделайте коммит и отправьте изменения в удаленный репозиторий:

    ```bash
    git add .
    git commit -m "<комментарий_к_коммиту>"
    git push origin <название_ветки>
    ```

    В итерациях будут зафиксированы все предыдущие изменения, даже если новые коммиты были отправлены с помощью команды `git push --force`.

    {% note info %}

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

    {% endnote %}

1. После создания новой итерации предложение изменений переводится в статус черновика. Повторно [опубликуйте](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/pr-create.md#create-from-draft) его.

Вы можете [внести](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/code-edit.md) изменения в ветку и создать новую итерацию непосредственно в интерфейсе SourceCraft.

## Посмотреть изменения, вносимые в целевую ветку {#get-changes}

1. Откройте [главную страницу](https://sourcecraft.dev) SourceCraft.
1. На вкладке ![image](../../_assets/console-icons/house.svg) **Домой** в секции ![image](../../_assets/console-icons/layout-tabs.svg) **Ваша мастерская** перейдите в раздел ![image](../../_assets/console-icons/archive.svg) **Репозитории**.
1. Выберите репозиторий.
1. На странице репозитория в разделе ![image](../../_assets/console-icons/code.svg) **Код** перейдите в секцию ![image](../../_assets/console-icons/code-pull-request.svg) **Предложения изменений**.
1. Выберите предложение изменений.
1. Посмотрите содержимое предложения изменений:
    * На вкладке ![image](../../_assets/console-icons/circle-exclamation.svg) **Обзор** отображается история итераций предложения изменений. Чтобы посмотреть изменения из конкретной итерации, напротив этой итерации нажмите ![image](../../_assets/console-icons/eye.svg) **Показать изменения**.
    * На вкладке ![image](../../_assets/console-icons/file-code.svg) **Изменённые файлы** отображаются измененные файлы репозитория.
      * Чтобы сравнить изменения между итерациями, выберите их в выпадающих списках в поле **Сравнить**.
      * Чтобы вывести структуру файлов, нажмите кнопку ![image](../../_assets/console-icons/layout-side-content-left.svg) рядом с выпадающими списками сравнения веток и итераций.

        Подробнее на странице [Навигация и поиск по коду в SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/code-navigation.md).

    * На вкладке ![image](../../_assets/console-icons/code-commit-horizontal.svg) **Изменения** отображаются все коммиты за все итерации предложения изменений.

## Оставить комментарий и запросить изменения {#leave-comment}

1. Откройте [главную страницу](https://sourcecraft.dev) SourceCraft.
1. На вкладке ![image](../../_assets/console-icons/house.svg) **Домой** в секции ![image](../../_assets/console-icons/layout-tabs.svg) **Ваша мастерская** перейдите в раздел ![image](../../_assets/console-icons/archive.svg) **Репозитории**.
1. Выберите репозиторий.
1. На странице репозитория в разделе ![image](../../_assets/console-icons/code.svg) **Код** перейдите в секцию ![image](../../_assets/console-icons/code-pull-request.svg) **Предложения изменений**.
1. Выберите предложение изменений.
1. Оставьте комментарий:

    {% list tabs %}

    - Общий

      На вкладке ![image](../../_assets/console-icons/circle-exclamation.svg) **Обзор** в блоке **Активность** введите свой комментарий.

    - К конкретной строке

      1. На вкладке ![image](../../_assets/console-icons/file-code.svg) **Изменённые файлы** напротив строки, к которой хотите оставить комментарий, нажмите ![image](../../_assets/console-icons/comment.svg).

          <!-- source: ru/_includes/sourcecraft/multi-line-comment.md -->
          {% note tip %}

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

          {% endnote %}
          <!-- endsource: ru/_includes/sourcecraft/multi-line-comment.md -->

      1. В открывшемся окне введите свой комментарий.

    {% endlist %}

    <!-- source: ru/_includes/sourcecraft/issue-pr-comment-parsing.md -->
    В описании и комментариях [задач](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/index.md#issues) и [предложений изменений](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/index.md#pr) поддерживаются краткие ссылки на другие задачи и предложения изменений. Такая запись автоматически преобразуется в гиперссылку, а при наведении указателя отображается карточка с краткой информацией. Используйте следующие форматы:
    * `!<номер_предложения_изменений>` — предложение изменений в текущем репозитории.
    * `<слаг_репозитория>!<номер_предложения_изменений>` — предложение изменений в другом репозитории текущей организации.
    * `<слаг_организации>/<слаг_репозитория>!<номер_предложения_изменений>` — предложение изменений в указанных организации и репозитории.
    * `#<номер_задачи>` — задача в текущем репозитории.
    * `<слаг_репозитория>#<номер_задачи>` — задача в другом репозитории текущей организации.
    * `<слаг_организации>/<слаг_репозитория>#<номер_задачи>` — задача в указанных организации и репозитории.
    <!-- endsource: ru/_includes/sourcecraft/issue-pr-comment-parsing.md -->

1. (опционально) Чтобы запросить правки в предложении изменений, выберите опцию **Запрос изменений**.
1. Нажмите **Комментировать**.

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


<!-- source: ru/_includes/sourcecraft/create-issue-from-comment.md -->
{% note tip %}

Из комментария к [предложению изменений](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/index.md#pr) или [задаче](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/index.md#issues) вы можете создать новую задачу. Для этого справа от комментария нажмите ![image](../../_assets/console-icons/ellipsis.svg) и выберите ![image](../../_assets/console-icons/arrow-up-right-from-square.svg) **Создать задачу**.

{% endnote %}
<!-- endsource: ru/_includes/sourcecraft/create-issue-from-comment.md -->

## Предложить код и принять предложение {#code-suggestion}

### Предложить код в комментарии {#create-suggestion}

Вы можете предложить вариант кода, который автор предложения изменений сможет применить непосредственно из комментария:
1. Откройте [главную страницу](https://sourcecraft.dev) SourceCraft.
1. На вкладке ![image](../../_assets/console-icons/house.svg) **Домой** в секции ![image](../../_assets/console-icons/layout-tabs.svg) **Ваша мастерская** перейдите в раздел ![image](../../_assets/console-icons/archive.svg) **Репозитории**.
1. Выберите репозиторий.
1. На странице репозитория в разделе ![image](../../_assets/console-icons/code.svg) **Код** перейдите в секцию ![image](../../_assets/console-icons/code-pull-request.svg) **Предложения изменений**.
1. Выберите предложение изменений.
1. На вкладке ![image](../../_assets/console-icons/file-code.svg) **Изменённые файлы** напротив строки, для которой хотите предложить код, нажмите ![image](../../_assets/console-icons/comment.svg).

    <!-- source: ru/_includes/sourcecraft/multi-line-comment.md -->
    {% note tip %}

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

    {% endnote %}
    <!-- endsource: ru/_includes/sourcecraft/multi-line-comment.md -->

1. В открывшемся окне нажмите ![image](../../_assets/sourcecraft/file-plus-minus.svg) **Предложение кода**.
1. Введите код, который вы хотите предложить.

    {% note warning %}

    Предложение кода отличается от обычного комментария наличием разметки `suggestion`:

    ````markdown
    ```suggestion
    Предлагаемые изменения
    ```
    ````

    Не удаляйте и не изменяйте эту разметку.

    {% endnote %}

1. (опционально) Чтобы запросить правки в предложении изменений, выберите опцию **Запрос изменений**.
1. Нажмите **Комментировать**.

    Также вы можете не публиковать предложение кода, а сохранить его черновик, чтобы доработать позже. Для этого нажмите **Черновик**.

### Принять код, предложенный в комментарии {#apply-suggestion}

Чтобы принять предложенный код из одного комментария:
1. В правом верхнем углу комментария с предложенным кодом нажмите ![image](../../_assets/console-icons/check.svg).
1. Введите сообщение к коммиту и нажмите **Применить**.

Чтобы принять предложенный код из нескольких комментариев одним коммитом:
1. В правом верхнем углу всех комментариев, которые вы хотите принять, нажмите ![image](../../_assets/console-icons/plus.svg).
1. В зависимости от того, на какой вкладке вы находитесь, примените изменения следующим образом:

    {% list tabs %}

    - Обзор

      В верхней части страницы в блоке с перечнем файлов, в которые вносятся изменения, нажмите **Применить предложения**.

    - Изменённые файлы

      В нижней части страницы нажмите **Применить**.

    {% endlist %}

1. Введите сообщение к коммиту и нажмите **Применить**.

Чтобы отклонить предложенный код, в правом верхнем углу комментария с предложенным кодом нажмите ![image](../../_assets/console-icons/xmark.svg).

## Вынести резолюцию {#set-resolution}

1. Откройте [главную страницу](https://sourcecraft.dev) SourceCraft.
1. На вкладке ![image](../../_assets/console-icons/house.svg) **Домой** в секции ![image](../../_assets/console-icons/layout-tabs.svg) **Ваша мастерская** перейдите в раздел ![image](../../_assets/console-icons/archive.svg) **Репозитории**.
1. Выберите репозиторий.
1. На странице репозитория в разделе ![image](../../_assets/console-icons/code.svg) **Код** перейдите в секцию ![image](../../_assets/console-icons/code-pull-request.svg) **Предложения изменений**.
1. Выберите предложение изменений.
1. В правом верхнем углу напротив кнопки ![image](../../_assets/console-icons/thumbs-up.svg) **Одобрить** нажмите ![image](../../_assets/console-icons/chevron-down.svg).
1. Выберите резолюцию:
    * ![image](../../_assets/console-icons/thumbs-up.svg) **Одобрить** — одобрить текущую итерацию предложения изменений. После внесения правок в предложение изменений резолюцию надо будет получить повторно.
    * ![image](../../_assets/console-icons/thumbs-up-2.svg) **Доверять** — одобрить текущую и все последующие итерации предложения изменений.
    * ![image](../../_assets/console-icons/ban.svg) **Заблокировать** — запретить слияние правок из предложения изменений в целевую ветку.

## Обновить ветку-источник {#update-source-branch}

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

1. Откройте [главную страницу](https://sourcecraft.dev) SourceCraft.
1. На вкладке ![image](../../_assets/console-icons/house.svg) **Домой** в секции ![image](../../_assets/console-icons/layout-tabs.svg) **Ваша мастерская** перейдите в раздел ![image](../../_assets/console-icons/archive.svg) **Репозитории**.
1. Выберите репозиторий.
1. На странице репозитория в разделе ![image](../../_assets/console-icons/code.svg) **Код** перейдите в секцию ![image](../../_assets/console-icons/code-pull-request.svg) **Предложения изменений**.
1. Выберите предложение изменений.
1. В правом верхнем углу нажмите ![image](../../_assets/console-icons/ellipsis.svg) и выберите **Обновить ветку**.
1. Выберите способ обновления:

    * **Обновить слиянием** — в ветке-источнике создается отдельный коммит слияния, который сохраняет историю изменений обеих веток.
    * **Обновить через squash и rebase** — коммиты ветки-источника переносятся поверх последнего коммита целевой ветки, сохраняя линейную историю изменений.

1. В открывшемся окне подтверждения нажмите **Да, конечно**.

    Если в ветке-источнике и в целевой ветке есть изменения в одних и тех же местах, откроется окно [разрешения конфликтов](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/resolve-merge-conflicts.md#resolve). После разрешения конфликтов и сохранения изменений ветка-источник будет обновлена.

## Выполнить слияние с целевой веткой {#merge}

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

1. Откройте [главную страницу](https://sourcecraft.dev) SourceCraft.
1. На вкладке ![image](../../_assets/console-icons/house.svg) **Домой** в секции ![image](../../_assets/console-icons/layout-tabs.svg) **Ваша мастерская** перейдите в раздел ![image](../../_assets/console-icons/archive.svg) **Репозитории**.
1. Выберите репозиторий.
1. На странице репозитория в разделе ![image](../../_assets/console-icons/code.svg) **Код** перейдите в секцию ![image](../../_assets/console-icons/code-pull-request.svg) **Предложения изменений**.
1. Выберите предложение изменений.
1. В правом верхнем углу напротив кнопки ![image](../../_assets/console-icons/code-pull-request.svg) **Принять** нажмите ![image](../../_assets/console-icons/chevron-down.svg).
1. Выберите способ слияния с целевой веткой:
    * **Создать изменение для объединения** — в целевой ветке создается отдельный коммит слияния, который сохраняет историю изменений обеих веток. Этот подход наглядно показывает, когда и как происходило слияние, сохраняя всю историю разработки без изменений.
    * **Объединить одним изменением** — перед слиянием с целевой веткой коммиты из ветки с изменениями объединяются в один коммит. Это помогает сохранить более чистую и упрощенную историю изменений, сводя серию мелких коммитов к одному.
    * **Перебазировать и объединить** — коммиты из ветки с изменениями присоединяются к основной ветке без создания специального коммита слияния. Это перемещает коммиты из ветки с изменениями в конец целевой ветки, сохраняя линейную историю изменений.
1. В правом верхнем углу нажмите кнопку ![image](../../_assets/console-icons/thumbs-up.svg) с выбранным способом слияния.

{% note tip %}

Чтобы ветка-источник предложения изменений автоматически удалялась после слияния с целевой веткой, в блоке **Настройки слияния** включите опцию **Удалять ветку-источник после слияния**. Эта опция переопределяет поведение по умолчанию, заданное для репозитория в файле [`.sourcecraft/branches.yaml`](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/branch-policies.md#branch-cleanup).

{% endnote %}

{% note info %}

Также вы можете [принудительно выполнить слияние с целевой веткой](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/pr-force-changes.md), минуя рецензирование и автоматические проверки.

{% endnote %}

## Отклонить предложение изменений {#discard}

1. Откройте [главную страницу](https://sourcecraft.dev) SourceCraft.
1. На вкладке ![image](../../_assets/console-icons/house.svg) **Домой** в секции ![image](../../_assets/console-icons/layout-tabs.svg) **Ваша мастерская** перейдите в раздел ![image](../../_assets/console-icons/archive.svg) **Репозитории**.
1. Выберите репозиторий.
1. На странице репозитория в разделе ![image](../../_assets/console-icons/code.svg) **Код** перейдите в секцию ![image](../../_assets/console-icons/code-pull-request.svg) **Предложения изменений**.
1. Выберите предложение изменений.
1. В правом верхнем углу нажмите кнопку ![image](../../_assets/console-icons/ellipsis.svg) и выберите **Отклонить предложение изменений**.

## Описать предложение изменений {#description}

1. Откройте [главную страницу](https://sourcecraft.dev) SourceCraft.
1. На вкладке ![image](../../_assets/console-icons/house.svg) **Домой** в секции ![image](../../_assets/console-icons/layout-tabs.svg) **Ваша мастерская** перейдите в раздел ![image](../../_assets/console-icons/archive.svg) **Репозитории**.
1. Выберите репозиторий.
1. На странице репозитория в разделе ![image](../../_assets/console-icons/code.svg) **Код** перейдите в секцию ![image](../../_assets/console-icons/code-pull-request.svg) **Предложения изменений**.
1. Выберите предложение изменений.
1. В разделе **Описание** добавьте или измените описание.

    Вы можете [использовать](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/generate-description.md#generate-in-created) Code Assistant для генерации описания, для этого нажмите ![image](../../_assets/console-icons/sparkles-fill.svg)</svg> **Создать с помощью ИИ**.

    <!-- source: ru/_includes/sourcecraft/ai-gen-desc-time.md -->
    Генерация описания может занять некоторое время.
    <!-- endsource: ru/_includes/sourcecraft/ai-gen-desc-time.md -->

    <!-- source: ru/_includes/sourcecraft/agents-md-tip.md -->
    {% note tip %}

    Вы можете [задать](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/generate-description.md#rules) правила, по которым Code Assistant будет формировать описания, в файле `AGENTS.md` в корне репозитория.

    {% endnote %}
    <!-- endsource: ru/_includes/sourcecraft/agents-md-tip.md -->

## Добавить метки {#add-labels}

<iframe width="640" height="360" src="https://runtime.strm.yandex.ru/player/video/vplvy3j76gvqu4hornlt?autoplay=0&mute=0" allow="autoplay; fullscreen; picture-in-picture; encrypted-media" frameborder="0" scrolling="no"></iframe>

1. Откройте [главную страницу](https://sourcecraft.dev) SourceCraft.
1. На вкладке ![image](../../_assets/console-icons/house.svg) **Домой** в секции ![image](../../_assets/console-icons/layout-tabs.svg) **Ваша мастерская** перейдите в раздел ![image](../../_assets/console-icons/archive.svg) **Репозитории**.
1. Выберите репозиторий.
1. На странице репозитория в разделе ![image](../../_assets/console-icons/code.svg) **Код** перейдите в секцию ![image](../../_assets/console-icons/code-pull-request.svg) **Предложения изменений**.
1. Выберите предложение изменений.
1. На панели справа в разделе **Метки** добавьте [метки](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/index.md#labels).

#### Полезные ссылки {#see-also}

* [Все инструкции по работе с предложениями изменений в SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/index.md#pr)
* [Взаимосвязь ресурсов SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/index.md)
