When to Use
-
Creating a new Pull Request
-
Writing PR titles and descriptions
-
Preparing commits for review
-
Using gh pr create command
Critical Patterns
PR Title = Conventional Commit
<type>(<scope>): <short description>
feat New feature
fix Bug fix
docs Documentation
refactor Code refactoring
test Adding tests
chore Maintenance
PR Description Structure
Summary
- 1-3 bullet points explaining WHAT and WHY
Changes
- List main changes
Testing
- Tests added/updated
- Manual testing done
Closes #123
Atomic Commits
Good: One thing per commit
git commit -m "feat(user): add User model" git commit -m "feat(user): add UserService" git commit -m "test(user): add UserService tests"
Bad: Everything in one commit
git commit -m "add user feature"
Code Examples
Basic PR Creation
gh pr create
--title "feat(auth): add OAuth2 login"
--body "## Summary
- Add Google OAuth2 authentication
Changes
- Added AuthProvider component
- Created useAuth hook
Closes #42"
PR with HEREDOC (Complex Description)
gh pr create --title "feat(dashboard): add analytics" --body "$(cat <<'EOF'
Summary
- Add real-time analytics dashboard
Changes
- Created AnalyticsProvider
- Added LineChart, BarChart components
Testing
- Unit tests for components
- Manual testing complete
Screenshots
Closes #123 EOF )"
Draft PR
gh pr create --draft
--title "wip: refactor auth"
--body "Work in progress"
PR with Reviewers and Labels
gh pr create
--title "feat(api): add rate limiting"
--body "Adds rate limiting to API"
--reviewer "user1,user2"
--label "enhancement,api"
Commands
Create PR
gh pr create --title "type(scope): desc" --body "..."
Create with web editor
gh pr create --web
View PR status
gh pr status
View diff
gh pr diff
Check CI status
gh pr checks
Merge with squash
gh pr merge --squash
Add reviewer
gh pr edit --add-reviewer username
Anti-Patterns
Don't: Vague Titles
Bad
gh pr create --title "fix bug" gh pr create --title "update"
Good
gh pr create --title "fix(auth): prevent session timeout"
Don't: Giant PRs
Bad: 50 files, 2000+ lines in one PR
Good: Split into logical PRs
PR 1: feat(models): add User model
PR 2: feat(api): add user endpoints
PR 3: feat(ui): add user pages
Don't: Empty Descriptions
Bad
--body "Added feature"
Good
--body "## Summary
- What you did and why
Changes
- Specific changes
Closes #123"
Quick Reference
Task Command
Create PR gh pr create -t "type: desc" -b "body"
Draft PR gh pr create --draft
Web editor gh pr create --web
Add reviewer --reviewer user1,user2
Add label --label bug,high-priority
Link issue Closes #123 in body
View status gh pr status
Merge squash gh pr merge --squash
Resources
-
Conventional Commits
-
GitHub CLI Manual