Как создавать Pull Request'ы из вашего терминала
  Pull request’ы (PR) являются фундаментальной частью совместной разработки на GitHub, обеспечивая проверку кода и обсуждение перед слиянием изменений. Это руководство объясняет, как эффективно создавать и управлять PR с использованием терминала, в основном используя GitHub CLI (gh).
Ключевые моменты
- Научитесь использовать GitHub CLI для управления PR
 - Освойте рабочие процессы создания PR через терминал
 - Следуйте лучшим практикам создания PR
 - Решайте распространенные проблемы
 - Внедряйте расширенные функции PR
 
Предварительные требования
Перед началом убедитесь, что у вас есть:
- Установленный и настроенный Git (Скачать Git)
 - Установленный GitHub CLI (
gh) (Документация GitHub CLI) - Аккаунт GitHub (Зарегистрироваться)
 - Доступ к репозиторию и необходимые разрешения
 - Базовое понимание команд Git
 
Настройка 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""
Лучшие практики
- Именование веток
- Используйте описательные префиксы: 
feature/,fix/,docs/,refactor/ - Включайте номер задачи, если применимо: 
feature/123-user-authentication 
 - Используйте описательные префиксы: 
 - Сообщения коммитов
- Следуйте соглашению о коммитах (Соглашение)
 - Включайте область действия и описание
 - Ссылайтесь на задачи: ""fixes #123""
 
 - Описание PR
- Используйте шаблоны, если они доступны
 - Включайте контекст и обоснование
 - Перечисляйте связанные задачи и зависимости
 - Добавляйте скриншоты для изменений UI
 
 - Проверка кода
- Оперативно отвечайте на отзывы
 - Обновляйте описание PR при необходимости
 - Быстро разрешайте конфликты
 
 
Устранение неполадок
Распространенные проблемы и решения
- 
Ошибка аутентификации
gh auth login --web - 
Отклонение отправки
git pull origin main git rebase main git push -f origin feature/your-feature-name - 
Конфликты слияния
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