LinuxCommandLibrary

git-pull-request

Create GitHub pull requests from the command line

TLDR

Create a pull request for a project on GitHub

$ git pull-request [target_branch]
copy

SYNOPSIS

git request-pull [<options>] <start> <url> [<end>]

PARAMETERS

-p
    Show patch text for each commit in addition to summary

<start>
    Starting commit or branch (e.g., a tag) from which changes diverge

<url>
    URL of the upstream project repository where <start> is published

<end>
    Optional ending commit to summarize up to (defaults to current HEAD)

DESCRIPTION

The git request-pull command generates a summarized description of the changes between two commits, formatted as an email-ready message to request that someone pull your changes into their repository.

It identifies the commits made since a specified starting point, lists the files affected, and provides a concise overview suitable for emailing maintainers. This is particularly useful in workflows where changes are shared via email rather than modern web-based pull request systems like GitHub or GitLab.

Usage typically involves specifying a starting commit (often a tag or branch point), the URL of the upstream repository, and optionally an ending commit (defaults to HEAD). The output includes a summary of commits with messages, a list of changed paths, and optionally the full patches if -p is used.

This tool predates widespread use of hosting platforms and remains relevant for email-based collaboration or custom workflows. It pipes well to git send-email for direct dispatch.

CAVEATS

Outputs to stdout only; pipe to email tools like git send-email.
Assumes linear history; complex merges may confuse summaries.
Deprecated for web PRs in favor of platform-specific tools.

EXAMPLE

git request-pull v1.0 https://example.com/project.git
Generates summary of changes since tag 'v1.0' for emailing.

WITH PATCH

git request-pull -p origin/main https://github.com/user/repo.git HEAD
Includes full diffs.

HISTORY

Introduced in Git 1.5.0 (January 2007) as part of early Git tooling for distributed development.
Added -p option in Git 1.6.0; minor refinements since for better formatting.

SEE ALSO

Copied to clipboard