.\" generated with Ronn-NG/v0.8.0 .\" http://github.com/apjanke/ronn-ng/tree/0.8.0 .TH "HUB" "1" "March 2019" "GITHUB" "Hub Manual" .SH "NAME" \fBhub\fR \- make git easier with GitHub .SH "SYNOPSIS" \fBhub\fR [\fB\-\-noop\fR] \fICOMMAND\fR [\fIOPTIONS\fR] .br \fBhub alias\fR [\fB\-s\fR] [\fISHELL\fR] .br \fBhub help\fR hub\-\fICOMMAND\fR .SH "DESCRIPTION" Hub is a tool that wraps git in order to extend it with extra functionality that makes it better when working with GitHub\. .SH "COMMANDS" Available commands are split into two groups: those that are already present in git but that are extended through hub, and custom ones that hub provides\. .SS "Extended git commands" .TP hub\-am(1) Replicate commits from a GitHub pull request locally\. .TP hub\-apply(1) Download a patch from GitHub and apply it locally\. .TP hub\-checkout(1) Check out the head of a pull request as a local branch\. .TP hub\-cherry\-pick(1) Cherry\-pick a commit from a fork on GitHub\. .TP hub\-clone(1) Clone a repository from GitHub\. .TP hub\-fetch(1) Add missing remotes prior to performing git fetch\. .TP hub\-init(1) Initialize a git repository and add a remote pointing to GitHub\. .TP hub\-merge(1) Merge a pull request locally with a message like the GitHub Merge Button\. .TP hub\-push(1) Push a git branch to each of the listed remotes\. .TP hub\-remote(1) Add a git remote for a GitHub repository\. .TP hub\-submodule(1) Add a git submodule for a GitHub repository\. .SS "New commands provided by hub" .TP hub\-alias(1) Show shell instructions for wrapping git\. .TP hub\-browse(1) Open a GitHub repository in a web browser\. .TP hub\-ci\-status(1) Display GitHub Status information for a commit\. .TP hub\-compare(1) Open a GitHub compare page in a web browser\. .TP hub\-create(1) Create a new repository on GitHub and add a git remote for it\. .TP hub\-delete(1) Delete a repository on GitHub\. .TP hub\-fork(1) Fork the current project on GitHub and add a git remote for it\. .TP hub\-pull\-request(1) Create a GitHub pull request\. .TP hub\-pr(1) List and checkout GitHub pull requests\. .TP hub\-issue(1) List and create GitHub issues\. .TP hub\-release(1) List and create GitHub releases\. .TP hub\-sync(1) Fetch from upstream and update local branches\. .SH "CONVENTIONS" Most hub commands are supposed to be run in a context of an existing local git repository\. Hub will automatically detect the GitHub repository the current project belongs to by scanning its git remotes\. .P In case there are multiple git remotes that are all pointing to GitHub, hub assumes that the main one is named "upstream", "github", or "origin", in that order of preference\. .P When working with forks, it\'s recommended that the git remote for your own fork is named "origin" and that the git remote for the upstream repository is named "upstream"\. See \fI\%https://help\.github\.com/articles/configuring\-a\-remote\-for\-a\-fork/\fR .P The default branch (usually "master") for the project is detected like so: .IP "" 4 .nf git symbolic\-ref refs/remotes/origin/HEAD .fi .IP "" 0 .P where \fIorigin\fR is the name of the git remote for the upstream repository\. .P The destination where the currently checked out branch is considered to be pushed to depends on the \fBgit config push\.default\fR setting\. If the value is "upstream" or "tracking", the tracking information for a branch is read like so: .IP "" 4 .nf git rev\-parse \-\-symbolic\-full\-name BRANCH@{upstream} .fi .IP "" 0 .P Otherwise, hub scans git remotes to find the first one for which \fBrefs/remotes/REMOTE/BRANCH\fR exists\. The "origin", "github", and "upstream" remotes are searched last because hub assumes that it\'s more likely that the current branch is pushed to your fork rather than to the canonical repo\. .SH "CONFIGURATION" .SS "GitHub OAuth authentication" Hub will prompt for GitHub username & password the first time it needs to access the API and exchange it for an OAuth token, which it saves in \fB~/\.config/hub\fR\. .P To avoid being prompted, use \fBGITHUB_USER\fR and \fBGITHUB_PASSWORD\fR environment variables\. .P Alternatively, you may provide \fBGITHUB_TOKEN\fR, an access token with \fBrepo\fR permissions\. This will not be written to \fB~/\.config/hub\fR\. .SS "HTTPS instead of git protocol" If you prefer the HTTPS protocol for git operations, you can configure hub to generate all URLs with \fBhttps:\fR instead of \fBgit:\fR or \fBssh:\fR: .IP "" 4 .nf $ git config \-\-global hub\.protocol https .fi .IP "" 0 .P This will affect \fBclone\fR, \fBfork\fR, \fBremote add\fR and other hub commands that expand shorthand references to GitHub repo URLs\. .SS "GitHub Enterprise" By default, hub will only work with repositories that have remotes which point to \fBgithub\.com\fR\. GitHub Enterprise hosts need to be whitelisted to configure hub to treat such remotes same as github\.com: .IP "" 4 .nf $ git config \-\-global \-\-add hub\.host MY\.GIT\.ORG .fi .IP "" 0 .P The default host for commands like \fBinit\fR and \fBclone\fR is still \fBgithub\.com\fR, but this can be affected with the \fBGITHUB_HOST\fR environment variable: .IP "" 4 .nf $ GITHUB_HOST=my\.git\.org git clone myproject .fi .IP "" 0 .SS "Environment variables" .TP \fBHUB_VERBOSE\fR Enable verbose output from hub commands\. .TP \fBHUB_CONFIG\fR The file path where hub configuration is read from and stored\. If \fBXDG_CONFIG_HOME\fR is present, the default is \fB$XDG_CONFIG_HOME/hub\fR; otherwise it\'s \fB$HOME/\.config/hub\fR\. The configuration file is also searched for in \fBXDG_CONFIG_DIRS\fR per XDG Base Directory Specification\. .TP \fBHUB_PROTOCOL\fR Use one of "https|ssh|git" as preferred protocol for git clone/push\. .TP \fBGITHUB_TOKEN\fR OAuth token to use for GitHub API requests\. .SH "BUGS" \fI\%https://github\.com/github/hub/issues\fR .SH "AUTHORS" \fI\%https://github\.com/github/hub/contributors\fR .SH "SEE ALSO" git(1), git\-clone(1), git\-remote(1), git\-init(1), \fI\%https://github\.com/github/hub\fR