Provided by: git-hub_2.1.3-1_all bug

NAME

       git-hub - Git command line interface to GitHub

SYNOPSIS

       git hub [global options]  <command> [options] [arguments]

DESCRIPTION

       git  hub  is  a simple command line interface to github, enabling most useful GitHub tasks (like creating
       and listing pull request or issues) to be accessed directly through the git command line.

       To use this command you'll probably need to make an  initial  configuration  to  get  authorization  from
       GitHub.  To  do this you can use the setup command.  See the CONFIGURATION section for more configuration
       options.

GLOBAL OPTIONS

       -h, --help
              Show this help and exit.

       --version
              Show program's version number and exit.

       -v, --verbose
              Be more verbose (can be specified multiple times to get extra verbosity)

       -s, --silent
              Be less verbose (can be specified multiple times to get less verbosity)

COMMANDS

       setup  This command performs an initial setup to connect to GitHub. It basically asks for a username  and
              a GitHub Personal Access Token (PAT), which is needed to perform most actions.

              The  token  will  be stored it in the Git configuration variable hub.oauthtoken for future use. If
              you don't have one, you can create it (check GitHub docs if you need more help).  Make  sure  your
              PAT has at least repo and user scope.

              The  username  is  also  stored  for  future  use in the hub.username variable. If the base URL is
              specified, it is stored in hub.baseurl too.

              By default configuration is stored in the repository's .git/config file (using git config). If you
              want your configuration to be global to your user or system-wide, use  the  --global  or  --system
              option respectively. These options are passed straight to git config.

              -u USERNAME, --username=USERNAME
                     GitHub's  username (login name), will be stored in the configuration variable hub.username.
                     If an e-mail is provided, then a username matching that e-mail will be  searched  and  used
                     instead, if found (for this to work the e-mail must be part of the public profile).

              -o TOKEN, --oauthtoken=TOKEN
                     GitHub's  Personal  Access  Token  (PAT),  will  be  stored  in  the configuration variable
                     hub.username. If an e-mail is provided, then  a  username  matching  that  e-mail  will  be
                     searched and used instead, if found (for this to work the e-mail must be part of the public
                     profile).

              -b URL, --baseurl=URL
                     GitHub's  base  URL  to  use to access the API. Set this when your GitHub API is in another
                     location other than the default (Enterprise servers usually use https://host/api/v3).

              --global
                     Store settings in the global configuration  (see  --global  option  in  git  config(1)  for
                     details).

              --system
                     Store  settings  in  the  system  configuration  (see  --system option in git config(1) for
                     details).

       clone REPO [DEST]
              This command is used to clone REPO, a GitHub repository, to a DEST directory (defaults to the name
              of the project being cloned). If the repository is specified in <owner>/<project> form,  the  REPO
              will  be used as upstream and a personal fork will be looked up. If none is found, a new fork will
              be created. In both cases, the fork will be cloned instead of the upstream  repository.  The  REPO
              can  be  specified  as  a  regular  clone  URL  too (http, ssh, git), in that case the URL will be
              inspected and the hub.urltype will be set as appropriate.

              If only <project> is specified as REPO, then the configuration hub.username is  used  as  <owner>,
              and the parent repository is looked up at GitHub to determine the real upstream repository.

              The  upstream  repository  is  cloned  as  --upstreamremote  (or  hub.upstreamremote,  upstream by
              default), the remote for the fork is added as --forkremote (or hub.forkremote,  fork  by  default)
              and  the  fork  is  set  as  the git remote.pushdefault (so pushing will hit the fork by default),
              unless --no-triangular is used (please see the option for more details).

              After cloning and fetching, the git configuration variables hub.upstream,  hub.upstreamremote  and
              hub.forkremote are set in the new cloned repo (see CONFIGURATION).

              -U NAME, --upstreamremote=NAME
                     Use NAME as the upstream remote repository name instead of the default 'upstream').

              -F NAME, --forkremote=NAME
                     Use NAME as the fork remote repository name instead of the default 'fork').

              -t, --triangular
                     Use  Git's triangular workflow configuration (this is the default). This option clones from
                     the parent/upstream repository, and adds the fork as a remote  repository.  Then  sets  the
                     remote.pushdefault  Git  option  and  hub.forkremote  git-hub  option  to  the  just cloned
                     repository.

                     The effect of this having the upstream repository used by default when you pull  but  using
                     your  fork  when  you  push,  which  is  typically  what  you want when using GitHub's pull
                     requests.

                     Git version 1.8.3 or newer is needed to use this option (and 1.8.4 or newer is  recommended
                     due to some issues in 1.8.3 related to this).

                     To change the default you can set the option hub.triangular. See CONFIGURATION for details.

              --no-triangular
                     Don't  use  Git's  triangular  workflow configuration (this is only available for backwards
                     compatibility but is not recommended).  This  option  clones  from  the  forked  repository
                     instead of cloning the upstream/parent repo, so both pulls and pushes will be done with the
                     fork by default.

                     This  option  could  be also used to clone a GitHub repository without forking it, but some
                     functionality of the tool will be lost.

              GIT CLONE OPTIONS
                     Any standard git clone option can be passed. Not all of them might make sense when  cloning
                     a GitHub repo to be used with this tool though.

              This  command  will  run  the hub.hookscript on some events, please have a look at HOOK SCRIPT for
              more details.

       issue  This command is used to manage GitHub issues through a set of subcommands.

              list   Show a list of open issues.

                     -c, --closed
                            Show closed issues instead.

                     -C, --created-by-me
                            Show only issues created by me

                     -A, --assigned-to-me
                            Show only issues assigned to me

              show ISSUE [ISSUE ...]
                     Show issues identified by ISSUE.

              new    Create a new issue.

                     The content of the template files ISSUE_TEMPLATE or ISSUE_TEMPLATE.md will be added to  the
                     issue  message  if  any  of those template files is found in the top-level directory of the
                     project, the .github directory or the .git directory.  The order for template files lookups
                     matters and  it  follows  the  order  as  described  above  for  template  file  names  and
                     directories. And only the content of the first template found will be added.

                     -m MSG, --message=MSG
                            Issue  title  (and  description).  The first line is used as the issue title and any
                            text after an empty line is used as the optional body.  If this option is not  used,
                            the default GIT_EDITOR is opened to write one.

                     -l LABEL, --label=LABEL
                            Attach LABEL to the issue (can be specified multiple times to set multiple labels).

                     -a USER, --assign=USER
                            Assign a user to the issue. USER must be a valid GitHub login name.

                     -M ID, --milestone=ID
                            Assign the milestone identified by the number ID to the issue.

                     --no-template
                            Do not add the template content to the message.

              update ISSUE
                     Similar to new but update an existing issue identified by ISSUE.

                     A convenient shortcut to close an issue is provided by the close subcommand.

                     -m MSG, --message=MSG
                            New issue title (and description). The first line is used as the issue title and any
                            text after an empty line is used as the optional body.

                     -t TITLE, --title=TITLE
                            New issue title.

                     -e, --edit-message
                            Open  the  default  GIT_EDITOR  to  edit  the current title (and description) of the
                            issue.

                     -o, --open
                            Reopen the issue.

                     -c, --close
                            Close the issue.

                     -l LABEL, --label=LABEL
                            If one or more labels are specified, they will replace  the  current  issue  labels.
                            Otherwise  the  labels are unchanged. If one of the labels is empty, the labels will
                            be cleared (so you can use -l'' to clear the labels of an issue.

                     -a USER, --assign=USER
                            Assign a user to the issue. USER must be a valid GitHub login name.

                     -M ID, --milestone=ID
                            Assign the milestone identified by the number ID to the issue.

              comment ISSUE
                     Add a new comment to an existing issue identified by ISSUE.

                     -m MSG, --message=MSG
                            Comment to be added to the issue. If this option is not used, the default GIT_EDITOR
                            is opened to write the comment.

              close ISSUE
                     Alias for update --close. (+ comment if --message or --edit-message is  specified).  Closes
                     issue identified by ISSUE.

                     -m MSG, --message=MSG
                            Add a comment to the issue before closing it.

                     -e, --edit-message
                            Open  the  default  GIT_EDITOR  to  write  a comment to be added to the issue before
                            closing it.

       pull   This command is used to manage GitHub pull requests.  Since  pull  requests  in  GitHub  are  also
              issues, most of the subcommands are repeated from the issue command for convenience. Only the list
              and new commands are really different, and attach and rebase are added.

              list   Show a list of open pull requests.

                     --closed
                            Show closed pull requests instead.

              show PULL [PULL ...]
                     Alias for issue show.

              checkout PULL ...
                     Checkout  the remote branch (head) of the pull request. This command first fetches the head
                     reference from the pull request and then calls the standard git checkout  command  and  any
                     extra  argument  will  be  passed  to git checkout as-is, after the reference that was just
                     fetched.  Remember this creates a detached checkout by default,  use  -b  if  you  want  to
                     create  a new branch based on the pull request. Please take a look at git checkout help for
                     more details.

              new [HEAD]
                     Create a new pull request. If HEAD is specified, it will be used as the branch (or git ref)
                     where your changes are implemented.  Otherwise the current branch is used.  If  the  branch
                     used  as  head  is not pushed to your fork remote, a push will be automatically done before
                     creating the pull request.

                     The repository to issue the pull request from is taken from the hub.forkrepo configuration,
                     which defaults to hub.username/<hub.upstream project part>.

                     The content of the template files PULL_REQUEST_TEMPLATE or PULL_REQUEST_TEMPLATE.md will be
                     added to the pull request message if any of those template files is found in the  top-level
                     directory  of  the  project,  the  .github  directory or the .git directory.  The order for
                     template files lookups matters and it follows the order as  described  above  for  template
                     file names and directories. And only the content of the first template found will be added.

                     -m MSG, --message=MSG
                            Pull  request  title  (and  description). The first line is used as the pull request
                            title and any text after an empty line is used as the optional body.  If this option
                            is not used, the default GIT_EDITOR is opened.  If the HEAD  branch  have  a  proper
                            description  (see  git  branch --edit-description), that description will be used as
                            the default message in the editor and if not, the message of the last commit will be
                            used instead.

                     -l LABEL, --label=LABEL
                            Attach LABEL to the pull request (can be specified multiple times  to  set  multiple
                            labels).

                     -a USER, --assign=USER
                            Assign a user to the pull request. USER must be a valid GitHub login name.

                     -M ID, --milestone=ID
                            Assign the milestone identified by the number ID to the pull request.

                     -b BASE, --base=BASE
                            Branch  (or  git  ref)  you  want  your changes pulled into. By default the tracking
                            branch (branch.<ref>.merge configuration variable)  is  used  or  the  configuration
                            hub.pullbase  if  not  tracking a remote branch. If none is present an error will be
                            displayed.

                     -c NAME, --create-branch=NAME
                            Create a new remote branch with (with name NAME) as  the  real  head  for  the  pull
                            request  instead  of  using the HEAD name passed as HEAD. This is useful to create a
                            pull request for a hot-fix you committed to your regular  HEAD  without  creating  a
                            branch first.

                     -f, --force-push
                            Force the push operations. Use with care!

                     -d, --draft
                            Create  a  draft pull request. Draft pull requests cannot be merged, and code owners
                            are not automatically requested to review draft pull requests.

              attach ISSUE [HEAD]
                     Convert the issue identified by ISSUE to a pull request by attaching  commits  to  it.  The
                     branch  (or  git  ref)  where your changes are implemented can be optionally specified with
                     HEAD (otherwise the current branch is used). This subcommand is very  similar  to  the  new
                     subcommand, please refer to it for more details.

                     Please  note  you  can  only  attach  commits  to  issues  if you have commit access to the
                     repository or if you are assigned to the issue.

                     -m MSG, --message=MSG
                            Add a comment to the issue/new pull request.

                     -e, --edit-message
                            Open the default GIT_EDITOR to write a comment to be added  to  the  issue/new  pull
                            request.  The  default  message  is  taken  from  the  --message  option if present,
                            otherwise the branch description or the first commit message is used as with the new
                            subcommand.

                     -b BASE, --base=BASE
                            Same as pull new, please see the details there.

                     -c NAME, --create-branch=NAME
                            Create a new remote branch with (with name NAME) as  the  real  head  for  the  pull
                            request  instead  of  using the HEAD name passed as HEAD. This is useful to create a
                            pull request for a hot-fix you committed to your regular  HEAD  without  creating  a
                            branch first.

                     -f, --force-push
                            Force the push operations. Use with care!

              rebase PULL
                     Close  a pull request identified by PULL by rebasing its base branch (specified in the pull
                     request) instead of merging as GitHub's Merge Button™ would do.

                     If the operation is successful, a comment will be posted informing the new HEAD  commit  of
                     the branch that has been rebased and the pull request will be closed.

                     The  type  of  URL  used  to  fetch  and  push can be specified through the hub.pullurltype
                     configuration variable (see CONFIGURATION for more details). Your working copy should  stay
                     the same ideally, if everything went OK.

                     The operations performed by this subcommand are roughly these:

                     1. git stash

                     2. git fetch pullhead

                     3. git checkout -b tmp FETCH_HEAD

                     4. git pull --rebase pullbase

                     5. git push pullbase

                     6. git checkout oldhead

                     7. git branch -D tmp

                     8. git stash pop

                     If hub.forcerebase is set to "true" (the default), --force will be passed to rebase (not to
                     be confused with this command option --force-push which will force the push), otherwise (if
                     is  "false")  a  regular rebase is performed. When the rebase is forced, all the commits in
                     the pull request are re-committed, so the Committer and CommitterDate metadata  is  updated
                     in  the  commits,  showing  the person that performed the rebase and the time of the rebase
                     instead of the original values, so providing more useful information. As a side effect, the
                     hashes of the commits will change.

                     If conflicts are found, the command is interrupted, similarly to how git rebase  would  do.
                     The  user  should either --abort the rebasing, --skip the conflicting commit or resolve the
                     conflict and --continue. When using one of  these  actions,  you  have  to  omit  the  PULL
                     argument.

                     -m MSG, --message=MSG
                            Use  this  message  for the comment instead of the default. Specify an empty message
                            (-m'') to completely omit the comment.

                     -e, --edit-message
                            Open the default GIT_EDITOR to write the comment.

                     --force-push
                            Force the push operations. Use with care!

                     -p, --pause
                            Pause the rebase just before the results are pushed and  the  issue  is  merged.  To
                            resume  the  pull  request rebasing (push the changes upstream and close the issue),
                            just use the --continue action.  This is particularly useful for testing.

                     -u, --stash-include-untracked
                            Passes the --include-untracked option to stash. If used all untracked files are also
                            stashed and then cleaned up with git clean, leaving the working directory in a  very
                            clean state, which avoid conflicts when checking out the pull request to rebase.

                     -a, --stash-all
                            Passes  the --all option to stash. Is like --stash-include-untracked but the ignored
                            files are stashed and cleaned in addition to the untracked files,  which  completely
                            removes the possibility of conflicts when checking out the pull request to rebase.

                     -D, --delete-branch
                            Delete  the  pull  request  branch  if the rebase was successful. This is similar to
                            press the "Delete Branch" Button (TM) in the web interface after merging.

                     Actions:

                     --continue
                            Continue an ongoing rebase.

                     --abort
                            Abort an ongoing rebase.

                     --skip Skip current patch in an ongoing rebase and continue.

              update PULL
                     Alias for issue update.

              comment PULL
                     Alias for issue comment.

              close PULL
                     Alias for issue close.

HOOK SCRIPT

       If the git configuration hub.hookscript is present, it will be used as a (shell)  script  to  execute  on
       certain  events.  Some  data  is  passed  as environment variables to the script. All events will set the
       HUB_HOOK environment variable with the name of the hook being executed.

       NOTE: This is an experimental feature, so it is only enabled for one event only so far.

       Available hooks (events):

       postclone
              Executed after a clone command was done successfully. The script will  be  run  with  the  freshly
              cloned  repository  directory as the current working directory, so the git configuration just done
              by the clone command is available (for example,  git  config  hub.forkremote  will  get  the  fork
              remote).

              The following extra environment variables are defined:

              HUB_TRIANGULAR
                     will be set to true if the clone was done in triangular mode and to false otherwise.

              HUB_FETCHREMOTE
                     will be set to hub.forkremote if triangular was used and to hub.upstreamremote otherwise.

              This hook is useful to set some extra git configuration that should be enabled only when cloning a
              repository  via this tool. For example, to prune the fork remote when it is updated, but only when
              triangular was used in the clone you can use:

              git config --global hub.hookscript 'if test "$HUB_HOOK" = postclone && $HUB_TRIANGULAR ; then  git
              config remote.fork.prune true; fi'

CONFIGURATION

       This program use the git configuration facilities to get its configuration from. These are the git config
       keys used:

       hub.username
              Your GitHub username. [default: current OS username]

       hub.oauthtoken required
              This  is the authorization token obtained via the setup command. Even when required, you shouldn't
              need to set this variable manually. Use the setup command instead.

              If you don't want to store the token in plain text, you can also specify a command by prefixing  a
              !.  The output of that command will be used as the token. The command will be run with the default
              shell.

              For example: oauthtoken = !password-manager ~/my.db get github-oauth-token.

       hub.upstream required
              Blessed repository used to get the issues from and make the  pull  requests  to.   The  format  is
              <owner>/<project>.  This  option  can  be automatically set by the clone command and is not really
              required by it or the setup command.

       hub.upstreamremote
              Remote name for accessing the upstream repository [default: upstream].

       hub.forkrepo
              Your blessed repository fork. The format is <owner>/<project>. Used to set the head for your  pull
              requests. [default: <username>/(upstream <project> part)]

       hub.forkremote
              Remote  name  for  accessing  your  fork.  Used  to  push branches before creating a pull request.
              [default: fork]

       hub.pullbase
              Default remote branch (or git reference) you want your changes pulled into when  creating  a  pull
              request. [default: master]

       hub.urltype
              Type  of  URL  to  use when an URL from a GitHub API is needed (for example, when 'pull rebase' is
              used). At the time of writing it could be  ssh_url  or  clone_url  for  HTTP).  See  GitHub's  API
              documentation[1] for more details or options. [default: ssh_url]

       hub.baseurl
              GitHub's  base  URL to use to access the API. Set this when your GitHub API is in another location
              other than the  default  (Enterprise  servers  usually  use  https://host/api/v3).  This  will  be
              prepended  to  all  GitHub  API  calls  and  it  has  to  be  a  full URL, not just something like
              "www.example.com/api/v3/".

       hub.forcerebase
              If is set to "true", --force will be passed to rebase. If is set to "false" a  regular  rebase  is
              performed. See the pull rebase command for details. [default: true]

       hub.triangular
              Makes  --triangular  for  clone  if  set  to  "true"  (boolean value). See clone documentation for
              details.

       hub.hookscript
              Script to run on certain events. Please have a look at HOOK SCRIPT for more details.

       [1] https://developer.github.com/v3/pulls/#get-a-single-pull-request

FILES

       This program creates some temporary files in the '.git' directory during its operation. The  contents  of
       these files can be used for debugging/recovery purposes if necessary.

       HUB_EDITMSG
              This  file  is  used  to  take  input  from  the  user,  e.g. issue comments, pull request title &
              description etc. If, after accepting user input, the command given by  the  user  fails  for  some
              reason, then the entered text can still be retrieved from this file.

       HUB_PULL_REBASING
              This  file  is  used to store various metadata information related to a rebase operation (with the
              primary aim of being able to rollback the repository to its original state if the rebase fails  or
              is  interrupted  due  to conflicts).  The sole presence of this file indicates that a rebase is in
              progress.

VIM SYNTAX HIGHLIGHT

       A VIM ftdetect plugin is provided, to enable it you have to follow some steps though. All you need to  do
       is copy (or preferably make a symbolic link) the script to ~/.vim/ftdetect/githubmsg.vim:

          mkdir -p ~/.vim/ftdetect
          ln -s /usr/share/vim/addons/ftdetect/githubmsg.vim ~/.vim/ftdetect/
          # or if you are copying from the sources:
          # ln -s ftdetect.vim ~/.vim/ftdetect/githubmsg.vim

AUTHOR

       Leandro Lucarella <leandro.lucarella@dunnhumby.com>

COPYRIGHT

       2013 dunnhumby Germany GmbH

devel                                              2022-01-31                                         GIT-HUB(1)