Skip to content

ahonn/gh

 
 

Repository files navigation

Node GH

All Contributors NPM version Build Status Known Vulnerabilities semantic-release Code Quality: Javascript Total Alerts

All the power of GitHub in your terminal.

Table of contents

Install

[sudo] npm install -g gh

Usage

gh [command] [--flags]

Contributors

Thanks goes to these wonderful people (emoji key):

Eduardo Lundgren
Eduardo Lundgren

💻 🐛 📖 💬 🚇 🔌 ⚠️ 👀 🤔
Zeno Rocha
Zeno Rocha

💻 🐛 📖 💬 🚇 🔌 ⚠️ 👀 🤔 🖋
Henrique Vicente
Henrique Vicente

💻 🐛 💬 🚇 🔌 ⚠️ 👀 🛡️ 🤔
Ryan Garant
Ryan Garant

🐛 💬 🚇 🔌 ⚠️ 👀 🛡️ 🤔
Bruno Coelho
Bruno Coelho

💻 🐛
Dustin Ryerson
Dustin Ryerson

💻
Drew Brokke
Drew Brokke

💻 🤔
Jose Ignacio
Jose Ignacio

💻
Rodrigo Vidal
Rodrigo Vidal

💻
Hamza Baig
Hamza Baig

💻
Gregory Amerson
Gregory Amerson

💻 🐛
Tom Rochette
Tom Rochette

💻 🐛 🚇
Mike Roberts
Mike Roberts

💻
Snyk bot
Snyk bot

💻
BlockchainDeveloper
BlockchainDeveloper

💻
João Paulo Bochi
João Paulo Bochi

💻
Matthew Elphick
Matthew Elphick

💻
Nate Cavanaugh
Nate Cavanaugh

💻
Peter Dave Hello
Peter Dave Hello

💻
Matt DesLauriers
Matt DesLauriers

💻
oughter
oughter

💻
Adrian Macneil
Adrian Macneil

💻
Aleksey Ostapenko
Aleksey Ostapenko

💻
Aliaksei
Aliaksei

💻
Andrey
Andrey

💻
André de Oliveira
André de Oliveira

💻
Brandon Patram
Brandon Patram

💻
Chema Balsas
Chema Balsas

💻
Christian Schlensker
Christian Schlensker

💻
Ciro Nunes
Ciro Nunes

💻
Denis Efremov
Denis Efremov

💻
Henri Cavalcante
Henri Cavalcante

💻
Jaka Hudoklin
Jaka Hudoklin

💻
José F. Romaniello
José F. Romaniello

💻
Joshua Wu
Joshua Wu

💻
Kevon Eaglin
Kevon Eaglin

💻
M. Tarık Yurt
M. Tarık Yurt

💻
Marcus Buffett
Marcus Buffett

💻
Randѕon
Randѕon

💻
Alex Hall
Alex Hall

💻
Rossi Oddet
Rossi Oddet

💻
Ryan Schmukler
Ryan Schmukler

💻
Stephen Williams
Stephen Williams

💻
Trevor Bortins
Trevor Bortins

💻
Whitney Young
Whitney Young

💻
Xavier RENE-CORAIL
Xavier RENE-CORAIL

💻
YAMAMOTO Yuji
YAMAMOTO Yuji

💻
Sam Mikes
Sam Mikes

💻
Tiju Thomas
Tiju Thomas

💻
Zev Averbach
Zev Averbach

💻 🐛
Aaron Jones
Aaron Jones

🐛
Ryan Schumacher
Ryan Schumacher

🐛
Rob Dodson
Rob Dodson

🐛
Derek Sifford
Derek Sifford

🐛
rachidbch
rachidbch

🐛
Liraz Siri
Liraz Siri

🐛
Zsolt Balogh
Zsolt Balogh

🐛 📖
Iliyan Peychev
Iliyan Peychev

🐛
Dante Wang
Dante Wang

🐛
Raymond Augé
Raymond Augé

🐛
Mohamed Bassem
Mohamed Bassem

🐛
Rich Sezov
Rich Sezov

🐛
Jason Kuhrt
Jason Kuhrt

🐛
gon138
gon138

🐛
Maxim Novikov
Maxim Novikov

🐛
Anders D. Johnson
Anders D. Johnson

🐛
Gabriel Izaias
Gabriel Izaias

🐛
Myles McNamara
Myles McNamara

🐛
Gilad Peleg
Gilad Peleg

🐛
Yoshua Wuyts
Yoshua Wuyts

🐛
Marc Lundgren
Marc Lundgren

🐛
Julio Camarero
Julio Camarero

🐛
Marcellus Tavares
Marcellus Tavares

🐛
Sergio Gonzalez
Sergio Gonzalez

🐛
Djalma Araújo
Djalma Araújo

🐛
Bruno Basto
Bruno Basto

🐛
Jason Pincin
Jason Pincin

🐛
Joel Kuzmarski
Joel Kuzmarski

🐛
Nadeem Bitar
Nadeem Bitar

📖
Cleydyr Bezerra de Albuquerque
Cleydyr Bezerra de Albuquerque

🐛
Ramon Pires da Silva
Ramon Pires da Silva

🔌

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

Terminal Demo

Supported Node Versions:

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

LTS Schedule

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

1. Info

Option Usage Type
-u, --user Required String
-I, --info Required Boolean
-n, --number Required String
-r, --repo Optional String
-u, --user Optional String
gh pr
  • Get information about a pull request.
gh pr --info number

2. 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.

Examples

  • Shortcut for listing open pull requests for the current repository.

  • To turn off pretty printing of output in a table add "pretty_print": false to your ~/.gh-json config

  • 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
gh pr --list --date "dddd, MMMM Do YYYY, h:mm:ss a"

3. Fetch

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

Examples

  • Shortcut for fetching pull request and checkout into a new branch pr-1.
gh pr 1
  • Fech pull request rebasing or merging into the current branch.
gh pr 1 --fetch --rebase
gh pr 1 --fetch --merge

4. Merge or rebase

Option Usage Type
-M, --merge Required Boolean
-R, --rebase Required Boolean
-n, --number Optional Number
-b, --branch Optional String
--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

  • 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

5. 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!"

6. 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

7. 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

8. 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.
gh pr --submit eduardolundgren --title 'Fix #32' --description 'Awesome fix'
  • 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

9. 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

1. 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
gh nt --date "dddd, MMMM Do YYYY, h:mm:ss a"

2. 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

1. 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 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

2. 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 of a certain repository.
gh is 1 --comment 'Node GH rocks!' --user eduardolundgren --repo node-gh

3. 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

4. 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
gh is --list --date "dddd, MMMM Do YYYY, h:mm:ss a"
  • List issues filtered by milestone.
gh is --list --milestone 1
  • 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

5. 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

6. 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'

7. 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

1. 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

2. 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
gh re --list --detailed --date "dddd, MMMM Do YYYY, h:mm:ss a"

3. 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 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

4. 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

5. Delete

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

Example

  • Delete a repository of the logged user.
gh re --delete foo

6. Clone

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

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

7. 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

8. 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

9. 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

10. 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

Gists

gh gists

Alias: gh gi

1. 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

2. 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
gh gi --list --date "dddd, MMMM Do YYYY, h:mm:ss a"

3. Create

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

Examples

  • Create a Gist hello containing "Hello World".
gh gi --new hello --content "Hello World!"
  • Create a private Gist hello containing "Hello World".
gh gi --new hello --content "Hello World!" --private

4. Fork

Option Usage Type
-f, --fork Required String

Examples

  • Fork a Gist.
gh gi --fork 5444883

5. Delete

Option Usage Type
-D, --delete Required String

Example

  • Delete a Gist.
gh gi --delete 4252323
  • Delete multiple Gists.
gh gi --delete 4252321 --delete 4252322

User

gh user

Alias: gh us

1. Login/Logout

Option Usage Type
-l, --login Required Boolean
-L, --logout Required Boolean

Examples

  • Login or show current logged in GitHub user.
gh user --login
  • Logout current GitHub account.
gh user --logout

2. Whoami

Option Usage Type
-w, --whoami Required Boolean

Examples

  • Prints your username to stdout.
gh user --whoami

Milestones

gh milestone

Alias: gh ms

1. List

Option Usage Type
-l, --list Required Boolean
-u, --user Required String
-a, --all Required Boolean
-r, --repo Optional String
-o, --organization Optional String

Examples

  • Shortcut for listing milestones for a specific repo.
gh ms
  • Listing milestones for a specific repo & user.
gh ms --list --user node-gh --repo gh
  • Listing all milestones for a specific organization.
gh ms --list --all --organization node-gh

Alias

This cmd provides something similar to shell aliases. If there are aliases in your .gh.json file, we will attempt to resolve the user, PR forwarder or PR submitter to your alias.

gh alias

Alias: gh al

1. List

Option Usage Type
-l, --list Required Boolean

Examples

  • Shortcut for listing aliases.
gh alias
  • List aliases.
gh alias --list

2. Add

Option Usage Type
-a, --add Required String
-u, --user Required String

Examples

  • Create alias for username.
gh alias --add zeno --user zenorocha

3. Remove

Option Usage Type
-r, --remove Required String

Examples

  • Remove alias.
gh alias --remove zeno

Config

There are some pretty useful configurations that you can set on .gh.json. This file can be found under home directory (on MacOSx: /Users/yourName/.gh.json on Windows: C:\\Users\yourName\.gh.json).

You can also set per-project configurations by adding a .gh.json file in your project's root folder and overriding existing keys.

"api": {
    "host": "github.mydomain.com",
    "protocol": "https"
}
  • Set default branch and remote.
"default_branch": "master",
"default_remote": "origin"
"default_pr_forwarder": "",
"default_pr_reviewer": ""
  • GitHub data filled once you log in.
"github_token": "",
"github_user": ""
  • Run automated tasks before or after a certain command.
"hooks": {
        "pull-request": {
            "merge": {
                "before": [{"cmd": "ls -la", "log": true}],
                "after": [
                    "gh pr {{options.number}} --comment 'Thank you, pull request merged :D'"
                ]
            }
        }
}
  • Run automated tasks passing arguments to the commands. Required for prompt commands.
"hooks": {
        "pull-request": {
            "merge": {
                "before": [{"cmd": "foo", "args": ["bar", "qux"]}]
            }
        }
}
  • Set default branch name prefix for PR fetching.
"pull_branch_name_prefix": "pr-"
  • Insert signature below issue comment.
"signature": "<br><br>:octocat: *Sent from [GH](http://nodegh.io).*"
  • Turn off ssh when pulling a repo and use https instead.
"ssh": false,

If you need to use a custom git command, set the environment variable GH_GIT_COMMAND.

Plugins

  • GH Gif - A plugin for commenting on pull requests/issues using GIF reactions.
  • GH Travis - A plugin for integrating Travis, a continous integration server.
  • GH Jira - A plugin for integrating Jira, an issue management system.

Feel free to create your own plugins by forking GH Boilerplate.

About

GitHub CLI made with NodeJS

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 99.0%
  • JavaScript 1.0%