Введение
После создания и настройки учетной записи GitHub вы можете начать вносить вклад в существующие проекты. Этот процесс включает создание форков, работу с запросами на слияние (Pull Requests) и синхронизацию репозиториев. В этой статье мы подробно разберем шаги, рабочие процессы и лучшие практики для эффективного участия в проектах.
Создание форков
Если у вас нет прав на прямую отправку изменений (push) в чужой проект, создайте форк — копию проекта в вашем пространстве имен. Это позволяет вносить изменения и отправлять их через запросы на слияние. На GitHub термин «fork» означает создание личной копии для работы, а не разделение проекта, как это могло восприниматься исторически.
Чтобы создать форк, перейдите на страницу проекта и нажмите кнопку «Fork» в правом верхнем углу. Через несколько секунд вы получите доступ к собственной копии с правами на запись.
Рабочий процесс с использованием GitHub
GitHub ориентирован на рабочий процесс с использованием тематических веток и запросов на слияние. Этот подход подходит как для небольших команд, так и для крупных распределенных проектов. Основные шаги:
- Создайте форк проекта.
- Создайте тематическую ветку на основе ветки master.
- Сделайте коммиты с улучшениями.
- Отправьте ветку в свой форк.
- Откройте запрос на слияние.
- Обсудите изменения и внесите корректировки при необходимости.
- Владелец проекта примет или отклонит изменения.
- Синхронизируйте ветку master с оригинальным репозиторием.
Вместо электронной почты обсуждение происходит через веб-интерфейс, что упрощает сотрудничество.
Создание запроса на слияние
Пример: Анна нашла проект https://github.com/example/weather-app, простого веб-приложения для отображения погоды, где отсутствует отображение температуры в Цельсиях. Она решила добавить эту функцию. Процесс:
$ git clone https://github.com/annadov/weather-app
$ cd weather-app
$ git checkout -b add-celsius
$ sed -i 's/tempFahrenheit/tempFahrenheit + " (°C: " + (tempFahrenheit - 32) * 5/9 + "°C)"/' index.html
$ git diff --word-diff
$ git commit -a -m 'Add Celsius temperature conversion'
$ git push origin add-celsius После этого на странице форка появится кнопка для создания Pull Request. Укажите информативное описание, например: «Добавлена конверсия температуры в Цельсии для улучшения юзабилити приложения.»
Обработка запроса на слияние
Владелец проекта может принять, отклонить или прокомментировать изменения. Например, если владелец предложит округлить значение температуры, Анна может обновить ветку:
$ sed -i 's/(tempFahrenheit - 32) * 5/9/Math.round((tempFahrenheit - 32) * 5/9)/' index.html
$ git commit -a -m 'Round Celsius temperature to nearest integer'
$ git push origin add-celsius GitHub автоматически обновит запрос, отмечая разрешение комментариев.
Синхронизация с исходным репозиторием
Если ваш форк отстает, синхронизируйте его. Пример для репозитория https://github.com/example/weather-app.git:
$ git checkout master
$ git pull https://github.com/example/weather-app.git
$ git push origin master Для автоматизации добавьте удаленный репозиторий:
$ git remote add upstream https://github.com/example/weather-app.git
$ git fetch upstream
$ git branch --set-upstream-to=upstream/master master
$ git config --local remote.pushDefault origin
$ git pull
$ git push Это упрощает обновление, но избегайте коммитов в master, чтобы избежать конфликтов.
Продвинутые приёмы
Используйте перекрёстные ссылки (#
Заключение
Внесение вклада в проекты на GitHub — это доступный процесс благодаря форкам и Pull Requests.
Отзывы