Когда вы вносите свой вклад в проект, необходимо безопасное место для написания и уточнения кода, прежде чем он влияет на основную базу кода. Ветви, вилки, фиксации и запросы на вытягивание работают вместе, чтобы предоставить вам это пространство, чтобы вы могли экспериментировать, проверять работу постепенно и предлагать готовые изменения для проверки.
Изоляция работы с ветвями и вилками
Большая часть работы начинается с создания изолированной копии кода, которую можно свободно изменить.
- Используйте ветвь при наличии доступа на запись к репозиторию. Ветвь позволяет разрабатывать функцию, устранять ошибку или экспериментировать в автономной области репозитория, не влияя на другие ветви. Вы создаете ветвь из существующей ветви, как правило, ветвь по умолчанию.
- Используйте вилку , если у вас нет доступа на запись или если требуется полная независимость от исходного проекта. Вилка — это отдельный репозиторий, который предоставляет общий доступ к коду и параметрам видимости исходному репозиторию upstream. Он имеет собственные ветви, проблемы и запросы на вытягивание. С помощью вилки можно также открывать запросы на вытягивание для вышестоящего репозитория.
Ветвь обычно является самым простым выбором при совместной работе в общем репозитории. Вилку часто лучше всего подходит для открытый код вкладов, где у вас может не быть доступа на запись в вышестоящий репозиторий.
Проверка работы с фиксациями
При написании кода вы сохраняете небольшие, значимые группы изменений в виде фиксаций. Каждая фиксация записывает моментальный снимок вашей работы вместе с сообщением, описывающим изменение, что упрощает отслеживание журнала, просмотр изменений и понимание развития кода.
Часто фиксация в ветви или вилке позволяет:
- Разорвать более крупное изменение в доступных для просмотра шагах.
- Откат к предыдущему состоянию, если эксперимент не работает.
- Предоставьте рецензентам четкую историю того, как вы прибыли на окончательное изменение.
Предложение изменений с запросами на вытягивание
Когда ваша работа готова к совместному использованию, откройте запрос на вытягивание , чтобы предложить объединение изменений в базовую ветвь. Запрос на вытягивание объединяет фиксации, описание изменения, а рецензенты инструментов должны обсудить и оценить его перед слиянием.
Вы можете открыть запрос на вытягивание во время работы, создав черновик запроса на вытягивание, который предоставляет общий доступ к изменениям без официального запроса проверки. Это полезно, если требуется ранний отзыв или требуется выполнить автоматические проверки кода.
Сохранение текущего и оптимизированного кода
Пока запрос на вытягивание открыт, базовая ветвь может изменяться, так как другие пользователи объединяют свою работу. Чтобы сохранить изменения чистыми и сократить конфликты, вы можете:
- Объединение или перебазируйте базовую ветвь в ветвь часто, чтобы ваш дифф оставался сосредоточенным на том, что ваше изменение вводит. GitHub показывает трехточие дифф по умолчанию, который сравнивает ветвь с точкой, в которой она расходится от базы.
- Перебазируйте, чтобы принудить журнал фиксации грязной фиксации — переупорядочение, объединение или повторную фиксацию перед запросом на проверку.
- Разрешать конфликты слиянием, если Git не может автоматически объединять конкурирующие изменения.
Работа в элементах управления репозитория
Опытные участники работают в пределах сторожевой границы, определяет репозиторий. Эти элементы управления определяют, где можно отправить запросы, которые должны утвердить работу и что необходимо передать перед слиянием.
- Защищенные ветви и наборы правил могут блокировать прямые отправки в важные ветви, требовать линейную историю или подписанные фиксации, а также требовать проверки состояния или проверки перед слиянием.
- Владельцы кода автоматически запрашиваются для проверки при изменении файлов, принадлежащих им, поэтому план их утверждения в конфиденциальных областях.
- Наборы правил push-уведомлений могут применяться в сети вилки, ограничивая пути к файлам, размеры или имена в каждом вилке.
- Перехватчики предварительного получения позволяют администраторам GitHub Enterprise Server применять проверки политики на сервере до принятия фиксаций.
Интегрированная цепочка инструментов
Запросы на вытягивание подключают код к службам автоматизации и службам, которые помогают быстро и безопасно писать код.
- Code scanning и Dependabot проблемы безопасности и уязвимые зависимости при переходе по запросу на вытягивание, поэтому вы можете применить безопасные методики написания кода рано.
- GitHub Actions может выполнять непрерывную интеграцию при каждой отправке запроса на вытягивание, создавать и тестировать изменения автоматически.