---
metadata:
  - name: generator
    content: Diplodoc Platform v5.54.2
alternate:
  - https://sourcecraft.dev/portal/docs/en/sourcecraft/operations/fork-work.md
  - https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/fork-work.md
  - href: ru/sourcecraft/operations/fork-work.md
    type: text/markdown
    title: Markdown version
  - href: ../../llms.txt
    type: text/markdown
    title: llms.txt
---
> **Documentation Index:** Fetch the complete configuration index at https://sourcecraft.dev/portal/docs/ru/llms.txt

# Работа с ответвлениями (forks) в SourceCraft

<!-- source: ru/_includes/sourcecraft/fork-description.md -->
_Ответвления (forks)_ — это механизм, с помощью которого вы можете создавать собственную изолированную копию другого [репозитория](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/index.md#repos). Ответвление включает весь код, историю коммитов и основную ветку или все ветки и теги оригинального репозитория.

Основное предназначение ответвлений — упрощение процесса внесения изменений в чужие проекты, в том числе опенсорс. Вы можете свободно экспериментировать, добавлять новые функции или исправлять ошибки, а затем предлагать свои правки в основной проект с помощью [предложений изменений](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/index.md#pr).
<!-- endsource: ru/_includes/sourcecraft/fork-description.md -->

Подробнее в подразделе [Ответвления (forks) ![image](../../_assets/console-icons/code-fork.svg)](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/index.md#forks).

## Создать ответвление {#create-fork}

<!-- source: ru/_includes/sourcecraft/fork-access.md -->
{% note info %}

Для создания ответвления требуются права на чтение репозитория-оригинала. Если вы создаете ответвление от ответвления, то у вас должны быть права на чтение для всех репозиториев из цепочки. Подробнее на странице [Управление доступом в SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/security/index.md).

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

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

    <!-- source: ru/_includes/sourcecraft/repo-fork-create-details.md -->
    * В поле **Владелец** выберите организацию, в которой будет создан репозиторий.
    * В поле **Название** укажите название репозитория. 
           
      Название должно быть уникальным в пределах организации и может содержать следующие [ASCII-символы](https://ru.wikipedia.org/wiki/ASCII): строчные и заглавные буквы латинского алфавита, цифры, запятые, дефисы и подчеркивания.

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

    * (опционально) В поле **Описание** укажите описание репозитория.
    <!-- endsource: ru/_includes/sourcecraft/repo-fork-create-details.md -->

1. Выберите, переносить ли в ответвление только основную ветку оригинального репозитория или все ветки и теги.
1. Нажмите **Создать ответвление**.

## Внести изменения в оригинальный репозиторий {#pr-to-origin}

1. Склонируйте репозиторий-ответвление:

    <!-- source: ru/_includes/sourcecraft/clone-repo-workflow.md -->
    1. [Установите Git](https://git-scm.com/downloads).
    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. На странице репозитория в правом верхнем углу нажмите кнопку ![image](../../_assets/console-icons/chevron-down-wide.svg) **Клонировать**.
    1. Из поля **HTTPS** или **SSH** скопируйте ![image](../../_assets/console-icons/copy.svg) ссылку для клонирования репозитория.

        В зависимости от протокола подключения для клонирования используются разные домены:

        #|
        || **Протокол** | **Домен** | **Ссылка для клонирования** ||
        || HTTPS | `git.sourcecraft.dev` | `https://git@git.sourcecraft.dev/<слаг_организации>/<слаг_репозитория>.git` ||
        || SSH | `ssh.sourcecraft.dev` | `ssh://ssh.sourcecraft.dev/<слаг_организации>/<слаг_репозитория>.git` ||
        |#

    1. В терминале выполните команду:

        ```bash
        git clone <ссылка_для_клонирования_репозитория>
        ```

        {% cut "Пример команды для клонирования репозитория с документацией SourceCraft" %}

        ```bash
        git clone https://git@git.sourcecraft.dev/sourcecraft/documentation.git
        ```

        {% endcut %}

        <!-- source: ru/_includes/sourcecraft/private-repo-clone-note.md -->
        {% note warning %}

        Чтобы склонировать [приватный или внутренний репозиторий](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/index.md#repos), аутентифицируйтесь с помощью [персонального токена (PAT)](https://sourcecraft.dev/portal/docs/ru/sourcecraft/security/pat.md) или [SSH-ключа](https://sourcecraft.dev/portal/docs/ru/sourcecraft/security/ssh.md).

        {% endnote %}
        <!-- endsource: ru/_includes/sourcecraft/private-repo-clone-note.md -->

    1. Перейдите в склонированный репозиторий:
        
        ```bash
        cd <имя_репозитория>
        ```
    <!-- endsource: ru/_includes/sourcecraft/clone-repo-workflow.md -->

1. Создайте новую ветку для изменений и отправьте ее в удаленный репозиторий-ответвление:

    ```bash
    git checkout -b new-feature
    git push -u origin new-feature
    ```

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

    ```bash
    git add .
    git commit -m "added new feature"
    git push origin new-feature
    ```

1. Создайте [предложение изменений](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/index.md#pr) из ветки репозитория-ответвления в ветку репозитория-оригинала:
    1. На странице репозитория-ответвления в разделе ![image](../../_assets/console-icons/code.svg) **Код** перейдите в секцию ![image](../../_assets/console-icons/code-pull-request.svg) **Предложения изменений**.
    1. В правом верхнем углу нажмите **Предложить изменения**.
    1. В блоке **источник** в списке **источник** выберите ветку репозитория-ответвления, изменения из которой вы хотите добавить.
    1. В блоке **цель**:
        * В списке **репозиторий** выберите репозиторий-оригинал.
        * В списке **цель** выберите ветку, в которую вы хотите добавить изменения.
    1. Введите название предложения изменений.
    1. (опционально) Подробно опишите, какие правки вносятся в предложении изменений.
    1. (опционально) Посмотрите вносимые правки:
        * На вкладке ![image](../../_assets/console-icons/file-code.svg) **Изменённые файлы** отображается список измененных файлов, а также вносимые изменения в формате `.diff`.

          Чтобы посмотреть изменения в формате «было — стало», нажмите ![image](../../_assets/console-icons/layout-columns.svg).

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

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

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

{% note info %}

<!-- source: ru/_includes/sourcecraft/fork-ci-restriction.md -->
[CI/CD-процессы](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/ci-cd.md) в предложении изменений из ветки репозитория-ответвления в ветку репозитория-оригинала могут быть запущены только пользователями с [ролью](https://sourcecraft.dev/portal/docs/ru/sourcecraft/security/index.md#src-repositories-developer) `Разработчик репозитория` или [ролью](https://sourcecraft.dev/portal/docs/ru/sourcecraft/security/index.md#src-repositories-maintainer) `Ответственный за репозиторий` в репозитории-оригинале. Автоматический запуск CI/CD в таких предложениях изменений отключен.
<!-- endsource: ru/_includes/sourcecraft/fork-ci-restriction.md -->

{% endnote %}

## Посмотреть ответвления репозитория {#get-forks}

1. Откройте [главную страницу](https://sourcecraft.dev) SourceCraft.
1. На вкладке ![image](../../_assets/console-icons/planet-earth.svg) **Обзор** перейдите в раздел ![image](../../_assets/console-icons/archive.svg) **Репозитории**.
1. Выберите репозиторий, ответвление от которого вы хотите посмотреть.
1. В блоке под описанием репозитория будет отображаться строка с количеством ответвлений, например ![image](../../_assets/console-icons/code-fork.svg) **3 ответвления**. Чтобы перейти к списку ответвлений, нажмите на эту строку.

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

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