Back

Como Criar Pull Requests a partir do seu Terminal

Como Criar Pull Requests a partir do seu Terminal

Pull requests (PRs) são fundamentais para o desenvolvimento colaborativo no GitHub, permitindo revisão de código e discussão antes que as alterações sejam mescladas. Este guia explica como criar e gerenciar PRs de forma eficiente usando o terminal, principalmente usando o GitHub CLI (gh).

Principais Aprendizados

  • Aprenda a usar o GitHub CLI para gerenciamento de PRs
  • Domine fluxos de trabalho de PRs baseados em terminal
  • Siga as melhores práticas para criação de PRs
  • Lide com cenários comuns de solução de problemas
  • Implemente recursos avançados de PR

Pré-requisitos

Antes de começar, certifique-se de ter:

Configurando o GitHub CLI

Instalação

Escolha seu sistema operacional:

macOS

# Usando Homebrew
brew install gh

# Usando 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

# Usando Scoop
scoop install gh

# Usando Winget
winget install --id GitHub.cli

Autenticação

Após a instalação, autentique-se com o GitHub:

gh auth login

Siga as instruções interativas para completar a autenticação. Você pode escolher entre os protocolos HTTPS ou SSH.

Criando um Pull Request

1. Prepare Seu Branch

# Atualize seu branch main local
git checkout main
git pull origin main

# Crie e mude para um novo branch de feature
git checkout -b feature/nome-da-sua-feature

2. Faça e Confirme Alterações

# Prepare todas as alterações
git add .

# Crie um commit com uma mensagem descritiva
git commit -m ""feat: implementar nova funcionalidade

- Adicionada nova funcionalidade
- Documentação atualizada
- Problemas relacionados corrigidos""

3. Envie as Alterações

# Envie seu branch para o GitHub
git push -u origin feature/nome-da-sua-feature

4. Crie o Pull Request

Usando GitHub CLI (Recomendado)

Criação Básica de PR

gh pr create --title ""Feature: Implementar Nova Funcionalidade"" --body ""Descrição das alterações""

Criação Avançada de PR

gh pr create 
  --title ""Feature: Implementar Nova Funcionalidade"" 
  --body ""## Alterações
- Implementada nova funcionalidade
- Testes atualizados
- Documentação adicionada

## Problemas Relacionados
Fecha #123"" 
  --base main 
  --head feature/nome-da-sua-feature 
  --reviewer usuario1,usuario2 
  --label ""enhancement,documentation"" 
  --milestone ""v1.0.0"" 
  --project ""Quadro de Projeto""

5. Gerenciando Seu PR

# Visualizar PR no navegador
gh pr view --web

# Verificar status do PR
gh pr status

# Listar todos os PRs
gh pr list

# Adicionar revisores ao PR existente
gh pr edit --add-reviewer usuario1,usuario2

# Adicionar etiquetas
gh pr edit --add-label ""priority,bug""

Melhores Práticas

  1. Nomenclatura de Branch
    • Use prefixos descritivos: feature/, fix/, docs/, refactor/
    • Inclua o número da issue, se aplicável: feature/123-autenticacao-usuario
  2. Mensagens de Commit
    • Siga os commits convencionais (Convenção)
    • Inclua escopo e descrição
    • Referencie issues: ""corrige #123""
  3. Descrição do PR
    • Use modelos se disponíveis
    • Inclua contexto e justificativa
    • Liste issues relacionadas e dependências
    • Adicione capturas de tela para alterações de UI
  4. Revisão de Código
    • Responda ao feedback prontamente
    • Atualize a descrição do PR conforme necessário
    • Resolva conflitos rapidamente

Solução de Problemas

Problemas Comuns e Soluções

  1. Falha na Autenticação

    gh auth login --web
    
  2. Push Rejeitado

    git pull origin main
    git rebase main
    git push -f origin feature/nome-da-sua-feature
    
  3. Conflitos de Merge

    git checkout main
    git pull
    git checkout feature/nome-da-sua-feature
    git rebase main
    # Resolva os conflitos e continue
    git rebase --continue
    

Recursos Avançados

PRs de Rascunho

gh pr create --draft

Modelos de PR

Crie .github/pull_request_template.md em seu repositório para descrições padronizadas de PR.

Automatizando a Criação de PR

Você pode criar aliases de shell ou scripts para padrões comuns de PR:

# Adicione ao .bashrc ou .zshrc
alias pr-create='gh pr create --template ""template.md"" --label ""needs-review""'

Lembre-se de manter seu GitHub CLI atualizado para os recursos mais recentes:

# Atualizar GitHub CLI
gh update

Perguntas Frequentes

[TOGGLE question=""O que faço se a autenticação falhar?"" answer=""Use gh auth login --web para autenticar através do seu navegador em vez da interface do terminal.""]

[TOGGLE question=""Como lidar com pushes rejeitados?"" answer=""1. Puxe as alterações mais recentes: git pull origin mainn2. Rebase seu branch: git rebase mainn3. Force push: git push -f origin feature/nome-da-sua-feature""]

[TOGGLE question=""Como resolvo conflitos de merge?"" answer=""1. Checkout para main: git checkout mainn2. Puxe as alterações mais recentes: git pulln3. Mude para seu branch: git checkout feature/nome-da-sua-featuren4. Rebase: git rebase mainn5. Resolva conflitos e continue: git rebase --continue""]

[TOGGLE question=""Posso criar PRs de rascunho?"" answer=""Sim, use a flag --draft: gh pr create --draft""]

[TOGGLE question=""Como uso modelos de PR?"" answer=""Crie um arquivo .github/pull_request_template.md em seu repositório para descrições padronizadas de PR.""]

Conclusão

Dominar a abordagem baseada em terminal para criar e gerenciar pull requests pode melhorar significativamente seu fluxo de trabalho de desenvolvimento. O GitHub CLI (gh) fornece um poderoso conjunto de ferramentas que agilizam o processo de PR, da criação à mesclagem. Seguindo as melhores práticas descritas neste guia e utilizando os recursos do GitHub CLI, você pode:

  • Economizar tempo evitando alternar entre terminal e navegador
  • Manter uma qualidade consistente de PR através de modelos e convenções
  • Lidar com desafios comuns de PR de forma eficiente
  • Automatizar tarefas repetitivas relacionadas a PR

Listen to your bugs 🧘, with OpenReplay

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