Back

Как создавать Pull Request'ы из вашего терминала

Как создавать Pull Request'ы из вашего терминала

Pull request’ы (PR) являются фундаментальной частью совместной разработки на GitHub, обеспечивая проверку кода и обсуждение перед слиянием изменений. Это руководство объясняет, как эффективно создавать и управлять PR с использованием терминала, в основном используя GitHub CLI (gh).

Ключевые моменты

  • Научитесь использовать GitHub CLI для управления PR
  • Освойте рабочие процессы создания PR через терминал
  • Следуйте лучшим практикам создания PR
  • Решайте распространенные проблемы
  • Внедряйте расширенные функции PR

Предварительные требования

Перед началом убедитесь, что у вас есть:

Настройка GitHub CLI

Установка

Выберите вашу операционную систему:

macOS

# Используя Homebrew
brew install gh

# Используя MacPorts
sudo port install gh

Linux

# Debian/Ubuntu
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
echo ""deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main"" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
sudo apt update
sudo apt install gh

# Fedora
sudo dnf install gh

# Arch Linux
sudo pacman -S github-cli

Windows

# Используя Scoop
scoop install gh

# Используя Winget
winget install --id GitHub.cli

Аутентификация

После установки пройдите аутентификацию в GitHub:

gh auth login

Следуйте интерактивным подсказкам для завершения аутентификации. Вы можете выбрать между протоколами HTTPS или SSH.

Создание Pull Request’а

1. Подготовьте вашу ветку

# Обновите локальную ветку main
git checkout main
git pull origin main

# Создайте и перейдите на новую ветку функционала
git checkout -b feature/your-feature-name

2. Внесите и зафиксируйте изменения

# Добавьте все изменения в индекс
git add .

# Создайте коммит с описательным сообщением
git commit -m ""feat: implement new feature

- Added new functionality
- Updated documentation
- Fixed related issues""

3. Отправьте изменения

# Отправьте вашу ветку в GitHub
git push -u origin feature/your-feature-name

4. Создайте Pull Request

Используя GitHub CLI (Рекомендуется)

Базовое создание PR

gh pr create --title ""Feature: Implement New Functionality"" --body ""Description of changes""

Расширенное создание PR

gh pr create 
  --title ""Feature: Implement New Functionality"" 
  --body ""## Changes
- Implemented new feature
- Updated tests
- Added documentation

## Related Issues
Closes #123"" 
  --base main 
  --head feature/your-feature-name 
  --reviewer username1,username2 
  --label ""enhancement,documentation"" 
  --milestone ""v1.0.0"" 
  --project ""Project Board""

5. Управление вашим PR

# Просмотр PR в браузере
gh pr view --web

# Проверка статуса PR
gh pr status

# Список всех PR
gh pr list

# Добавление проверяющих к существующему PR
gh pr edit --add-reviewer username1,username2

# Добавление меток
gh pr edit --add-label ""priority,bug""

Лучшие практики

  1. Именование веток
    • Используйте описательные префиксы: feature/, fix/, docs/, refactor/
    • Включайте номер задачи, если применимо: feature/123-user-authentication
  2. Сообщения коммитов
    • Следуйте соглашению о коммитах (Соглашение)
    • Включайте область действия и описание
    • Ссылайтесь на задачи: ""fixes #123""
  3. Описание PR
    • Используйте шаблоны, если они доступны
    • Включайте контекст и обоснование
    • Перечисляйте связанные задачи и зависимости
    • Добавляйте скриншоты для изменений UI
  4. Проверка кода
    • Оперативно отвечайте на отзывы
    • Обновляйте описание PR при необходимости
    • Быстро разрешайте конфликты

Устранение неполадок

Распространенные проблемы и решения

  1. Ошибка аутентификации

    gh auth login --web
    
  2. Отклонение отправки

    git pull origin main
    git rebase main
    git push -f origin feature/your-feature-name
    
  3. Конфликты слияния

    git checkout main
    git pull
    git checkout feature/your-feature-name
    git rebase main
    # Разрешите конфликты и продолжите
    git rebase --continue
    

Расширенные функции

Черновики PR

gh pr create --draft

Шаблоны PR

Создайте файл .github/pull_request_template.md в вашем репозитории для стандартизированных описаний PR.

Автоматизация создания PR

Вы можете создать псевдонимы оболочки или скрипты для общих шаблонов PR:

# Добавьте в .bashrc или .zshrc
alias pr-create='gh pr create --template ""template.md"" --label ""needs-review""'

Не забывайте обновлять GitHub CLI для получения последних функций:

# Обновление GitHub CLI
gh update

Часто задаваемые вопросы

[TOGGLE question=""Что делать, если аутентификация не удалась?"" answer=""Используйте gh auth login --web для аутентификации через браузер вместо интерфейса терминала.""]

[TOGGLE question=""Как обрабатывать отклоненные отправки?"" answer=""1. Получите последние изменения: git pull origin mainn2. Выполните перебазирование вашей ветки: git rebase mainn3. Принудительно отправьте: git push -f origin feature/your-feature-name""]

[TOGGLE question=""Как разрешить конфликты слияния?"" answer=""1. Перейдите на main: git checkout mainn2. Получите последние изменения: git pulln3. Переключитесь на вашу ветку: git checkout feature/your-feature-namen4. Выполните перебазирование: git rebase mainn5. Разрешите конфликты и продолжите: git rebase --continue""]

[TOGGLE question=""Могу ли я создавать черновики PR?"" answer=""Да, используйте флаг --draft: gh pr create --draft""]

[TOGGLE question=""Как использовать шаблоны PR?"" answer=""Создайте файл .github/pull_request_template.md в вашем репозитории для стандартизированных описаний PR.""]

Заключение

Освоение подхода к созданию и управлению pull request’ами через терминал может значительно улучшить ваш рабочий процесс разработки. GitHub CLI (gh) предоставляет мощный набор инструментов, которые упрощают процесс работы с PR, от создания до слияния. Следуя лучшим практикам, описанным в этом руководстве, и используя функции GitHub CLI, вы можете:

  • Экономить время, избегая переключений контекста между терминалом и браузером
  • Поддерживать стабильное качество PR с помощью шаблонов и соглашений
  • Эффективно решать распространенные проблемы с PR
  • Автоматизировать повторяющиеся задачи, связанные с PR

Listen to your bugs 🧘, with OpenReplay

See how users use your app and resolve issues fast.
Loved by thousands of developers