npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

gh

v2.8.9

Published

Boost your productivity & automate tasks when working with GitHub, all from the comfort of your CLI.

Downloads

77,787

Readme

DEPRECATED


Boost your productivity & automate tasks when working with GitHub, all from the comfort of your CLI.

Table of contents

Contributors

Install

npm install -g gh

Usage

  • Most commands require you to use a developer key
  • We automate the process for you the first time you run a command
  • Instructions on manually adding a developer key for extra security

Simple example: list prs for current repo

gh pr

Contributors

Huge thanks goes to these wonderful people (emoji key):

This project follows the all-contributors specification. Contributions of any kind welcome!

Contributing

For detailed instructions, check Contributing. Don't miss the source code reports.

History

For detailed changelog, check Releases.

License

BSD-3-Clause

Demonstration

Supported Node Versions:

We support the node versions that the Node.js organization supports which as of now is Node v6 & up.

Authentication

Under the hood, we are using @octokit/rest to work with the GitHub API The method of authentication that we use with octokit, is a personal access token You have two options here: 1. Run gh which will start the authentication process & generate the token for you automatically - Though they are hidden, the downside of this is having to type your user & pass - Supports 2fa 2. Manually generate your personal token & add it to your ~/.gh.json

Available commands

gh help

List all comands options.

gh help --all

List specific command options.

gh help <command>

Global flags

| Option | Usage | Type | | ------------ | ---------- | --------- | | --verbose | Optional | Boolean | | --insane | Optional | Boolean | | --no-color | Optional | Boolean | | --no-hooks | Optional | Boolean |

The verbose flag is useful for debugging issues. The insane flag is a more complete verbose flag, which leaks more privacy sensitive data by default.

Pull requests

gh pull-request

Alias: gh pr

PR: Info

| Option | Usage | Type | | ---------------- | ---------- | --------- | | -u, --user | Required | String | | -I, --info | Required | Boolean | | -n, --number | Required | String | | -r, --repo | Optional | String | | -u, --user | Optional | String |

Get information about a pull request.

gh pr --info 1

PR: List

| Option | Usage | Type | | ------------------ | ------------ | ------------------------------------------------------------------ | | -l, --list | Required | Boolean | | -a, --all | Optional | Boolean | | -O, --org | Optional | String | | -m, --me | Optional | Boolean | | -d, --detailed | Optional | Boolean | | --direction | Optional | [asc, desc] | | --date | Optional | String | | -b, --branch | Optional | String | | --remote | Optional | String | | -r, --repo | Optional | String | | --sort | Optional | [created, updated, popularity, long-running, complexity] | | -S, --state | Optional | [open, closed] | | -u, --user | Optional | String | | --link | Optional | Boolean |

  • user is owner of the repository, it is the authenticated user by default.
  • remote is the name of the remote configuration in a git directory, i.e. origin, upstream.
  • Therefore, it only makes sense when this command is run in a git directory.
  • To turn off pretty printing of output in a table add "pretty_print": false to your ~/.gh-json config
  • To adjust pagination rules

Examples

Shortcut for listing open pull requests for the current repository

gh pr

List open pull requests for all branches from all your repositories.

gh pr --list --all

List open pull requests for all branches in all repositories belonging to the "github" organization.

gh pr --list --all --org github

List open pull requests sent by logged user on current repository.

gh pr --list --me

List open pull requests in node-gh/gh repository.

gh pr --list --user node-gh --repo gh

List open pull requests with link and content.

gh pr --list --detailed

List open pull requests for a branch.

gh pr --list --branch master

List open pull requests and sort them by popularity (comment count).

gh pr --list --sort popularity

List open pull requests and sort them by asc long-running (old but still active).

gh pr --list --sort long-running --direction asc

List open pull requests and sort them by complexity (complexity is calculated based on number of additions, deletions, changed files, comments and review comments).

gh pr --list --sort complexity

List open pull requests with their link

gh pr --list --link

List open pull requests with a formatted date (Any string that the moment library's formatter accepts should work: https://momentjs.com/docs/#/displaying/format/).

gh pr --list --date "dddd, MMMM Do YYYY, h:mm:ss a"

PR: Merge or Rebase

| Option | Usage | Type | | ---------------- | ------------ | --------- | | -f, --fetch | Required | Boolean | | -M, --merge | Required | Boolean | | -R, --rebase | Required | Boolean | | -n, --number | Optional | Number | | -b, --branch | Optional | String | | --draft | Optional | Boolean | | --remote | Optional | String | | -r, --repo | Optional | String | | -u, --user | Optional | String |

Omitting --number will try to guess the pull number from branch name e.g. pr-1 results in --number 1. Omitting --branch will merge or rebase into config.default_branch.

Examples

Shortcut for fetching pull request and checkout into a new branch pr-1.

gh pr 1

Merge or rebase pull request into a local branch.

gh pr 1 --fetch --merge
gh pr 1 --fetch --rebase

Merge or rebase pull request into branch dev.

gh pr 1 --fetch --rebase --branch dev
gh pr 1 --fetch --merge --branch dev

PR: Comment

| Option | Usage | Type | | ----------------- | ------------ | -------- | | -c, --comment | Required | String | | -n, --number | Required | Number | | --remote | Optional | String | | -r, --repo | Optional | String | | -u, --user | Optional | String |

Examples

Comment on a pull request.

gh pr 1 --comment "Merged, thank you!"

Submit a pull request using your default editor by passing an empty --comment

gh pr 1 --comment

PR Forward

| Option | Usage | Type | | ---------------- | ------------ | -------- | | --fwd | Required | String | | -n, --number | Required | Number |

Omitting a value for --fwd fallbacks to the default_pr_forwarder key found in your config file.

Examples

Forward a pull request to another reviewer.

gh pr 1 --fwd username

PR: Open or Close

| Option | Usage | Type | | ---------------- | ------------ | --------- | | -o, --open | Required | Boolean | | -C, --close | Required | Boolean | | -n, --number | Required | Number | | --remote | Optional | String | | -r, --repo | Optional | String | | -u, --user | Optional | String |

Examples

Open a pull request.

gh pr 1 --open

Close a pull request.

gh pr 1 --close

Close multiple pull requests.

gh pr --close --number 1 --number 2

Open multiple pull requests.

gh pr --open --number 1 --number 2

Open or close a pull request that you've sent to someone.

gh pr 1 --close --user eduardolundgren

PR: Submit

| Option | Usage | Type | | --------------------- | ------------ | -------- | | -s, --submit | Required | String | | -b, --branch | Optional | String | | -D, --description | Optional | String | | -i, --issue | Optional | Number | | -r, --repo | Optional | String | | -t, --title | Optional | String |

Omitting a value for --submit fallbacks to the default_pr_reviewer key found in your config file. Omitting --title will submit a pull request using the last commit message as title.

Examples

Submit a pull request using the current branch to the repository owner or organization.

gh pr --submit eduardolundgren --title 'Fix #32' --description 'Awesome fix'

Submit a pull request using your default editor by passing an empty --title and or --description

gh pr --submit eduardolundgren --title --description

Submit a pull request using the current branch to dev branch.

gh pr --submit eduardolundgren --branch dev

Submit a pull request from a issue.

gh pr --submit eduardolundgren --issue 150

Submit a pull request in draft state.

gh pr --submit eduardolundgren --draft

PR: Open in Browser

| Option | Usage | Type | | ----------------- | ------------ | --------- | | -B, --browser | Required | Boolean | | -n, --number | Required | Number | | -u, --user | Optional | String | | -r, --repo | Optional | String |

Examples

Open GitHub pull request page in the browser.

gh pr 100 --browser

Notifications

gh notification

Alias: gh nt

Notifications: Latest

| Option | Usage | Type | | ---------------- | ------------ | --------- | | -l, --latest | Required | Boolean | | --remote | Optional | String | | -r, --repo | Optional | String | | -u, --user | Optional | String | | --date | Optional | String |

Examples

Shortcut for displaying the latest activities on the current repository.

gh nt

Display the latest activities on a certain repository.

gh nt --latest --user eduardolundgren --repo node-gh

Diplay notifications with a formatted date (Any string that the moment library's formatter accepts should work: https://momentjs.com/docs/#/displaying/format/).

gh nt --date "dddd, MMMM Do YYYY, h:mm:ss a"

Notifications: Watch

| Option | Usage | Type | | --------------- | ------------ | --------- | | -w, --watch | Required | Boolean | | --remote | Optional | String | | -r, --repo | Optional | String | | -u, --user | Optional | String |

Examples

Watch for any activity on the current repository.

gh nt --watch

Watch for any activity on a certain repository.

gh nt --watch --user eduardolundgren --repo node-gh

Issues

gh issue

Alias: gh is

Issue: Create

| Option | Usage | Type | | ------------------ | ------------ | --------- | | -N, --new | Required | Boolean | | -t, --title | Required | String | | -A, --assignee | Optional | String | | -L, --labels | Optional | String | | -m, --message | Optional | String | | --remote | Optional | String | | -r, --repo | Optional | String | | -u, --user | Optional | String |

Examples

Shortcut for creating a new issue on the current repository.

gh is 'Node GH rocks!' 'Body with **Markdown** support'

Create a new issue using your default editor by passing an empty --message (also works with an empty title)

gh is --new --title 'Node GH rocks!' --message

Create a new issue on a certain repository.

gh is --new --title 'Node GH rocks!' --message 'Body with **Markdown** support' --user eduardolundgren --repo node-gh

Create a new issue with labels.

gh is --new --title 'Node GH rocks!' --labels bug,question,test

Create a new issue and assign it to someone.

gh is --new --title 'Node GH rocks!' --assignee zenorocha

Issue: Comment

| Option | Usage | Type | | ----------------- | ------------ | -------- | | -c, --comment | Required | String | | -n, --number | Required | Number | | --remote | Optional | String | | -r, --repo | Optional | String | | -u, --user | Optional | String |

Examples

Comment on an issue of the current repository.

gh is 1 --comment 'Node GH rocks!'

Comment on an issue using your default editor by passing an empty --comment (also works with an empty title)

gh is 1 --comment

Comment on an issue of a certain repository.

gh is 1 --comment 'Node GH rocks!' --user eduardolundgren --repo node-gh

Issue: Open or Close

| Option | Usage | Type | | ---------------- | ------------ | --------- | | -o, --open | Required | Boolean | | -C, --close | Required | Boolean | | -n, --number | Required | Number | | --remote | Optional | String | | -r, --repo | Optional | String | | -u, --user | Optional | String |

Examples

Open an issue.

gh is 1 --open

Close an issue.

gh is 1 --close

Close multiple issues.

gh is --close --number 1 --number 2

Open multiple issues.

gh is --open --number 1 --number 2

Open or close an issue that you've sent to someone.

gh is 1 --close --user eduardolundgren

Issue: List

| Option | Usage | Type | | ------------------- | ------------ | -------------------- | | -l, --list | Required | Boolean | | -a, --all | Optional | Boolean | | -A, --assignee | Optional | String | | --date | Optional | String | | -d, --detailed | Optional | Boolean | | -L, --labels | Optional | String | | -M, --milestone | Optional | [Number, String] | | --remote | Optional | String | | -r, --repo | Optional | String | | -S, --state | Optional | [open, closed] | | -u, --user | Optional | String |

Examples

Shortcut for listing all issues on the current repository.

gh is

List all issues from all repositories.

gh is --list --all

List issues assigned to someone.

gh is --list --assignee zenorocha

List issues with link and content.

gh is --list --detailed

List only closed issues on the current repository.

gh is --list --state closed

List issues with a formatted date (Any string that the moment library's formatter accepts should work: https://momentjs.com/docs/#/displaying/format/).

gh is --list --date "dddd, MMMM Do YYYY, h:mm:ss a"

List issues filtered by milestone title.

gh is --list --milestone "milestone title"

List issues that contains labels todo and bug.

gh is --list --labels todo,bug

List all issues on a certain repository.

gh is --list --user eduardolundgren --repo node-gh

Issue: Open in Browser

| Option | Usage | Type | | ----------------- | ------------ | --------- | | -B, --browser | Required | Boolean | | -n, --number | Required | Number | | -u, --user | Optional | String | | -r, --repo | Optional | String |

Examples

Shortcut for opening GitHub issue page in the browser.

gh is 100

Open GitHub issue page in the browser.

gh is 100 --browser

Issue: Lock

| Option | Usage | Type | | ---------------- | ------------ | ----------------------------------------------- | | --lock | Required | Boolean | | --lock-reason | Optional | [off-topic, too heated, resolved, spam] | | -n, --number | Required | Number | | --remote | Optional | String | | -r, --repo | Optional | String | | -u, --user | Optional | String |

Examples

Lock issue on the current repository.

gh is 1 --lock

Lock issue on the current repository with a reason.

gh is 1 --lock --lock-reason resolved

Issue: Search

| Option | Usage | Type | | ------------------ | ------------ | --------- | | -s, --search | Required | Boolean | | -a, --all | Optional | Boolean | | -d, --detailed | Optional | Boolean | | -r, --repo | Optional | String | | -u, --user | Optional | String |

Examples

Search issues in current repository

gh is --search 'term'

Search issues in all repositories for a user

gh is --all --user node-gh --search 'term'

Search issues in a repository for a user

gh is  --user node-gh --repo gh --search 'term'

Search issues in a repository for a user with link and content

gh is  --user node-gh --repo gh --search 'term'

Search issues with github filters

gh is  --user node-gh --repo gh --search 'updated:<=2013-05-24'

Issue: Assign

| Option | Usage | Type | | ------------------ | ------------ | --------- | | --assign | Required | Boolean | | -A, --assignee | Required | String | | -n, --number | Required | Number | | -r, --repo | Optional | String | | -u, --user | Optional | String |

Examples

Assign an issue on the current repository to a user.

gh is --assign --assignee zenorocha --number 1

Assign an issue on a specific repository to a user.

gh is --assign --assignee zenorocha --number 1 --user eduardolundgren --repo gh

Repo

gh repo

Alias: gh re

Repo: Open in Browser

| Option | Usage | Type | | ----------------- | ------------ | --------- | | -B, --browser | Required | Boolean | | -u, --user | Optional | String | | -r, --repo | Optional | String |

Examples

Shortcut for opening the GitHub repository page in the browser.

gh re

Open GitHub repository page in the browser.

gh re --browser --user eduardolundgren --repo node-gh

Repo: List

| Option | Usage | Type | | ------------------ | ------------ | ----------------------------------------------- | | -l, --list | Required | Boolean | | -d, --detailed | Optional | Boolean | | -u, --user | Optional | String | | -t, --type | Optional | [all, owner, public, private, member] | | --date | Optional | String |

Examples

List all repositories.

gh re --list

List all private repositories.

gh re --list --type private

List all repositories from someone.

gh re --list --user zenorocha

List open repositories with a formatted date (Any string that the moment library's formatter accepts should work: https://momentjs.com/docs/#/displaying/format/).

gh re --list --detailed --date "dddd, MMMM Do YYYY, h:mm:ss a"

Repo: Create

| Option | Usage | Type | | ---------------------- | ------------ | ----------- | | -N, --new | Required | String | | -O, --organization | Optional | String | | -c, --clone | Optional | Boolean | | -t, --type | Optional | [private] | | --init | Optional | Boolean | | --gitignore | Optional | String | | --homepage | Optional | String | | --description | Optional | String |

Examples

Create a new GitHub repository and clone on the current directory.

gh re --new foo --clone

Create a new GitHub repository based on the name of the current directory & init with a README

gh re --new --clone --init

Create a new GitHub repository for an organization.

gh re --new foo --organization node-gh

Create a new GitHub repository using .gitignore template for Ruby.

gh re --new gemified --gitignore Ruby

Create a new private repository on GitHub, initializing it with a initial commit of the README.

gh re --new foo --init --type private

Repo: Fork

| Option | Usage | Type | | ---------------------- | ------------ | -------- | | -f, --fork | Required | String | | -u, --user | Required | String | | -O, --organization | Optional | String |

Examples

Fork a GitHub repository.

gh re --fork repo --user user

Fork a GitHub repository into the node-gh organization.

gh re --fork repo --user user --organization node-gh

Repo: Delete

| Option | Usage | Type | | ---------------- | ------------ | -------- | | -D, --delete | Required | String | | -u, --user | Required | String |

Example

Delete a repository of the logged user.

gh re --delete foo

Repo: Clone

| Option | Usage | Type | | ---------------------- | ------------ | -------- | | -c, --clone | Required | String | | -r, --repo | Required | String | | -O, --organization | Optional | String | | -P, --protocol | Optional | String | | -u, --user | Optional | String |

If you have custom ssh config, you can add "api": { "ssh_host": "custom-name", ... } to your .gh.json file.

Examples

Clone a repository.

gh re --clone --repo gh

Clone a repository from a specific user using HTTPS protocol.

gh re --clone --user eduardolundgren --repo gh --protocol https

Repo: Create Label

| Option | Usage | Type | | ---------------------- | ------------ | --------- | | -C, --color | Required | String | | -L, --label | Required | Boolean | | -N, --new | Required | String | | -r, --repo | Required | String | | -O, --organization | Optional | String | | -u, --user | Optional | String |

Examples

Create a label for a repository (color is a hex code with or without literal hex symbol).

gh re --label --new bug --color '#7057ff' --repo gh

Create a label for a user's repository.

gh re --label --new bug --color '#7057ff' --user eduardolundgren --repo gh

Repo: Delete Label

| Option | Usage | Type | | ---------------------- | ------------ | --------- | | -L, --label | Required | Boolean | | -D, --delete | Required | String | | -r, --repo | Required | String | | -O, --organization | Optional | String | | -u, --user | Optional | String |

Examples

Delete a label from a repository.

gh re --label --delete bug --repo gh

Delete a label from a user's repository.

gh re --label --delete bug --user eduardolundgren --repo gh

Repo: List Labels

| Option | Usage | Type | | ---------------------- | ------------ | --------- | | -L, --label | Required | Boolean | | -l, --list | Required | Boolean | | -r, --repo | Required | String | | -O, --organization | Optional | String | | -u, --user | Optional | String |

Examples

List labels for a repository.

gh re --label --list --repo gh

List labels for a user's repository.

gh re --label --list --user eduardolundgren --repo gh

Repo: Update Label

| Option | Usage | Type | | ---------------------- | ------------ | --------- | | -C, --color | Required | String | | -L, --label | Required | Boolean | | -r, --repo | Required | String | | -U, --update | Required | String | | -O, --organization | Optional | String | | -u, --user | Optional | String |

Examples

Update a label for a repository (color is a hex code with or without literal hex symbol).

gh re --label --update bug --color color --repo gh

Update a label for a user's repository.

gh re --label --update bug --color color --user eduardolundgren --repo gh

Repo: Search

Find repositories via various criteria. Repository search looks through the projects you have access to on GitHub. You can filter the results using GitHub's search qualifiers. Examples:

| Option | Usage | Type | | ---------------------- | ------------ | ----------------------------------------------- | | -s, --search | Required | Boolean | | -d, --detailed | Optional | Boolean | | -u, --user | Optional | String | | -r, --repo | Optional | String | | -O, --organization | Optional | String | | -t, --type | Optional | [all, owner, public, private, member] |

Examples

Search private repositories you have access to with the term "secret".

gh re --search secret --type private

OR

gh re --search secret is:private

Matches repositories from GitHub org showing detailed results.

gh re --detailed -o github --search octocat

OR

gh re --detailed --search octocat org:github

Gists

gh gists

Alias: gh gi

Gist: Open in Browser

| Option | Usage | Type | | ----------------- | ------------ | --------- | | -B, --browser | Required | Boolean | | -u, --user | Optional | String | | -i, --id | Optional | String |

Examples

Shortcut for opening your Gists in the browser.

gh gi

Open a Gist in the browser.

gh gi --browser --id 5991877

Gist: List

| Option | Usage | Type | | -------------- | ------------ | --------- | | -l, --list | Required | Boolean | | -u, --user | Optional | String | | --date | Optional | String |

Examples

List all gists.

gh gi --list

List all gists from someone.

gh gi --list --user brunocoelho

List gists with a formatted date (Any string that the moment library's formatter accepts should work: https://momentjs.com/docs/#/displaying/format/).

gh gi --list --date "dddd, MMMM Do YYYY, h:mm:ss a"

Gist: Create

| Option | Usage | Type | | --------------------- | ------------ | --------- | | -N, --new | Required | String | | -c, --content | Optional | String | | -d, --description | Optional | String | | -p, --private | Optional | Boolean |

Examples