Skip to main content

GitHub flow

Следите GitHub за Flow, чтобы сотрудничать над проектами.

Введение

GitHub Flow — это лёгкий рабочий процесс, основанный на ветках. Поток GitHub полезен для всех, не только для разработчиков. Например, здесь, в GitHub, мы используем GitHub Flow для нашей политики сайта, документации и дорожной карты.

Необходимые компоненты

Чтобы следить GitHub за потоком, вам понадобится аккаунт GitHub и репозиторий. Для информации о том, как создать аккаунт, смотрите Создание аккаунта на GitHub Для информации о том, как создать репозиторий, см. Краткое руководство по репозиториям. Для информации о том, как найти существующий репозиторий для вклада, см. Поиск способов внести вклад в open source на GitHub.

Следующий GitHub поток

Совет

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

Создание ветви

Создайте ветвь репозитория. Короткое описательное имя ветви позволит участникам совместной работы быстро получать представление о текущей работе. Например, increase-test-timeout или add-code-of-conduct. Дополнительные сведения см. в разделе Создание и удаление ветвей в репозитории.

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

Внести изменений

В ветви можно вносить необходимые изменения в репозиторий. Дополнительные сведения см. в разделе AUTOTITLE, AUTOTITLE, Создание новых файлов, [Изменение файлов или Переименование файла](/repositories/working-with-files/managing-files/moving-a-file-to-a-new-location).

Ветвь — это безопасное место для внесения изменений. Если вы совершили ошибку, вы можете отменить изменения или отправить дополнительные изменения, чтобы исправить ее. Изменения не будут вноситься в ветвь по умолчанию, пока вы не выполните слияние.

Зафиксируйте и отправьте изменения в ветвь. Сопровождайте каждую фиксацию сообщением с описанием, чтобы помочь себе и будущим участникам понять, какие изменения она содержит. Например, fix typo или increase rate limit.

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

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

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

Совет

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

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

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

При создании запроса на вытягивание добавьте сводку изменений и описание решаемой ими проблемы. Чтобы эти сведения были нагляднее, можно включить изображения, ссылки и таблицы. Если запрос на вытягивание призван решить проблему, свяжите его с ней, чтобы заинтересованные лица знали о запросе на вытягивание, и наоборот. При связывании с помощью ключевого слова проблема автоматически закроется после слияния запроса на вытягивание. Дополнительные сведения см. в разделе [AUTOTITLE и Базовый синтаксис написания и форматирования](/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue).

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

Репозиторий может настроить так, чтобы при создании запроса на вытягивание автоматически запрашивалась проверка у определенных команд или пользователей. Можно также вручную упомянуть (@mention) конкретных людей или команды или запросить у них проверку.

Если в репозитории настроены проверки для запросов на вытягивание, вы увидите все непройденные проверки для вашего запроса на вытягивание. Это помогает узнавать об ошибках перед слиянием ветви. Дополнительные сведения см. в разделе Сведения о проверках состояния.

Обработка комментариев рецензентов

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

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

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

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

GitHub Сообщит, есть ли у вашего pull request конфликты, которые нужно решить до слияния. Дополнительные сведения см. в разделе Разрешение конфликтов слияния.

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

Удаление ветви

После слияния запроса на вытягивание удалите ветвь. Это означает, что работа с ветвью завершена, и предотвращает случайное использование старых ветвей вами или другими пользователями. Дополнительные сведения см. в разделе Удаление и восстановление ветвей в запросе на вытягивание.

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