Skip to content

GitHub CLI

GitHub CLI with Copilot - Command Line AI

GitHub CLI (gh) brings Copilot's AI capabilities to your terminal, enabling AI-assisted workflows directly from the command line.

What is GitHub CLI with Copilot?

GitHub CLI integrates Copilot directly into your terminal workflow, allowing you to:

  • Get command suggestions
  • Explain complex commands
  • Generate scripts
  • Interact with GitHub from the terminal

Installation

Prerequisites

  1. Install GitHub CLI (gh)
  2. Have GitHub Copilot access
  3. Authenticate with GitHub

Setup

# Install GitHub CLI (if not already installed)
# macOS
brew install gh

# Windows
winget install GitHub.cli

# Linux
sudo apt install gh
# or
sudo dnf install gh

# Authenticate
gh auth login

# Install Copilot extension
gh extension install github/gh-copilot

Core Commands

Ask Copilot

Get help with any question:

# Ask a question
gh copilot suggest "how do I find large files in git history"

# Response:
# Command: git rev-list --objects --all | git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | sed -n 's/^blob //p' | sort -nk2 | tail -20
# Explanation: This finds the 20 largest blobs in your git history...

Explain Commands

Understand complex commands:

gh copilot explain "awk '{print $2}' file.txt | sort | uniq -c | sort -rn | head -10"

# Response:
# This command pipeline:
# 1. Extracts the second column from file.txt
# 2. Sorts the values
# 3. Counts unique occurrences
# 4. Sorts by count in descending order
# 5. Shows the top 10 results

Suggest Commands

Get command suggestions for tasks:

gh copilot suggest "create a new branch and switch to it"

# Response:
# git checkout -b new-branch-name
# or
# git switch -c new-branch-name

Common Use Cases

Git Operations

Task Ask Copilot
Undo last commit "how to undo the last commit but keep changes"
Squash commits "squash last 3 commits into one"
Find commit "find commit that introduced a bug"
Clean up "remove all merged branches"

GitHub Operations

# Create a PR
gh copilot suggest "create a pull request with title and body"

# Review PRs
gh copilot suggest "list all PRs that need my review"

# Issues
gh copilot suggest "close all issues with label 'wontfix'"

Shell Operations

# File operations
gh copilot suggest "find all files modified in the last 24 hours"

# Process management
gh copilot suggest "find process using port 3000 and kill it"

# Disk usage
gh copilot suggest "show disk usage by directory sorted by size"

Interactive Mode

Enter interactive mode for multi-turn conversations:

gh copilot
# Entering interactive mode...

> How do I set up a git hook?

I can help you set up a git hook. What kind of hook do you need?
- pre-commit: runs before commit
- post-commit: runs after commit
- pre-push: runs before push
...

> I want a pre-commit hook to run linting

Here's how to set up a pre-commit hook for linting:

1. Create the hook file:
   echo '#!/bin/sh
   npm run lint
   if [ $? -ne 0 ]; then
     echo "Linting failed. Please fix errors before committing."
     exit 1
   fi' > .git/hooks/pre-commit

2. Make it executable:
   chmod +x .git/hooks/pre-commit

Shell Integration

Aliases

Add helpful aliases to your shell config:

# ~/.bashrc or ~/.zshrc

# Quick Copilot access
alias cop='gh copilot suggest'
alias cope='gh copilot explain'

# Common tasks
alias gc='gh copilot suggest "git commit with message"'
alias gpr='gh copilot suggest "create pull request"'

Completions

Enable shell completions:

# Bash
gh completion -s bash > /etc/bash_completion.d/gh

# Zsh
gh completion -s zsh > ~/.zsh/completions/_gh

# Fish
gh completion -s fish > ~/.config/fish/completions/gh.fish

Advanced Usage

Scripting

Use Copilot in scripts:

#!/bin/bash
# Automated code review script

# Get Copilot's suggestion for reviewing changes
changes=$(git diff --stat)
gh copilot suggest "review these git changes for issues: $changes"

Integration with Other Tools

# Pipe output to Copilot
cat error.log | gh copilot explain "what's wrong in this log"

# Use with other CLI tools
gh copilot suggest "jq query to extract user names from this json" < users.json

Tips and Tricks

Be Specific

❌ gh copilot suggest "do git stuff"

✅ gh copilot suggest "rebase my branch onto main and resolve conflicts automatically preferring my changes"

Context Helps

Provide context for better suggestions:

gh copilot suggest "I'm working on a Node.js project with npm, how do I update all dependencies"

Learn from Explanations

Use explain to learn new commands:

# Found a command online? Understand it before running:
gh copilot explain "find . -type f -name '*.js' -exec grep -l 'TODO' {} +"

Security

Always review suggested commands before running them, especially those that:

  • Delete files (rm, del)
  • Modify system settings
  • Access sensitive data
  • Make network requests

Troubleshooting

Issue Solution
Extension not found Run gh extension install github/gh-copilot
Authentication error Run gh auth login again
Slow responses Check network connection
Incorrect suggestions Provide more context