Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
GHQ(1)									  GHQ(1)

NAME
     ghq - Manage remote repository clones

DESCRIPTION
     'ghq'  provides  a  way  to  organize remote repository clones, like go get
     does. When you clone a remote repository by ghq get, ghq makes a  directory
     under a specific root directory (by default ~/ghq) using the remote reposi-
     tory URL's host and path.

	 $ ghq get https://github.com/x-motemen/ghq
	 # Runs `git clone https://github.com/x-motemen/ghq ~/ghq/github.com/x-motemen/ghq`

     You can also list local repositories (ghq list).

SYNOPSIS
     ghq get [-u] [-p] [--shallow] [--vcs <vcs>] [--look] [--silent] [--branch] [--no-recursive] [--bare] [--partial blobless|treeless] <repository URL>|<host>/<user>/<project>|<user>/<project>|<project>
     ghq list [-p] [-e] [<query>]
     ghq create [--vcs <vcs>] <repository URL>|<host>/<user>/<project>|<user>/<project>|<project>
     ghq rm [--dry-run] <repository URL>|<host>/<user>/<project>|<user>/<project>|<project>
     ghq migrate [-y] [--dry-run] <local repository path>
     ghq root [--all]

COMMANDS
     get
	 Clone	a  remote  repository  under  ghq  root directory (see DIRECTORY
	 STRUCTURES below). ghq clone is an  alias  for  this  command.  If  the
	 repository  is already cloned to local, nothing will happen unless '-u'
	 ('--update') flag is supplied, in which case the  local  repository  is
	 updated  ('git  pull  --ff-only'  eg.).  When	you use '-p' option, the
	 repository is cloned via SSH protocol.
	 If there are multiple ghq.root s, existing local  clones  are	searched
	 first. Then a new repository clone is created under the primary root if
	 none is found.
	 With  '--shallow'  option, a "shallow clone" will be performed (for Git
	 repositories only, 'git clone --depth 1 ...' eg.). Be	careful  that  a
	 shallow-cloned repository cannot be pushed to remote. Currently Git and
	 Mercurial repositories are supported.
	 With  '--branch'  option,  you  can clone the repository with specified
	 branch. This option is currently supported for Git, Mercurial,  Subver-
	 sion and git-svn.
	 The 'ghq' gets the git repository recursively by default.
	 We can prevent it with '--no-recursive' option. With '--bare' option, a
	 "bare	clone"	will be performed (for Git repositories only, 'git clone
	 --bare ...' eg.).
	 With '--partial' option, a "partial clone" will be performed  (for  Git
	 repositories  only,  in  'blobless' mode, 'git clone --filter=blob:none
	 ...', in 'treeless' mode, 'git clone --filter=tree:0 ...' eg.).

     list
	 List locally cloned repositories. If a query argument	is  given,  only
	 repositories  whose  names  contain  that  query  text are listed. '-e'
	 ('--exact') forces the match to be an exact one (i.e. the query  equals
	 to  project, user/project or host/user/project) If '-p' ('--full-path')
	 is given, the full paths to the repository root are printed instead  of
	 relative ones.

     root
	 Prints  repositories' root (i.e. ghq.root). Without '--all' option, the
	 primary one is shown.

     rm
	 Remove local repository. If '--dry-run' option is given, the repository
	 is not actually removed but the path to it is printed.

     create
	 Creates new repository.

     migrate
	 Migrate an existing repository directory to the  ghq-managed  directory
	 structure.  The  command  detects the VCS backend, retrieves the remote
	 URL, and moves the repository to the  appropriate  location  under  ghq
	 root.

CONFIGURATION
     Configuration uses 'git-config' variables.

     ghq.root
	 The  path  to directory under which cloned repositories are placed. See
	 DIRECTORY STRUCTURES below. Defaults to ~/ghq.
	 This variable can have multiple values. If so,  the  last  one  becomes
	 primary one i.e. new repository clones are always created under it. You
	 may  want  to	specify  "$GOPATH/src"	as a secondary root (environment
	 variables should be expanded.)

     ghq.user
	 In ghq, when specifying only the repository name without slashes as  in
	 ghq  get  {{Project}},  ghq  attempts	to  auto-complete the repository
	 owner. By default, the owner used is the value of the environment vari-
	 able USER (or USERNAME on Windows). Setting this option allows  you  to
	 explicitly specify the owner.

     ghq.completeUser
	 Rather  than  always  using your own username for owner completion, you
	 may want to complete the owner with the same name  as	the  repository.
	 For	example,    fetch   ruby   as	github.com/ruby/ruby,	vim   as
	 github.com/vim/vim, and peco as  github.com/peco/peco.  If  you  prefer
	 this  behavior, set this option to false to switch the owner completion
	 method.

     ghq.defaultHost
	 The default host used when the repository specification omits the host.
	 For   example,   ghq	get   owner/project   normally	  resolves    to
	 github.com/owner/project.  If	this  option  is set, the specified host
	 will be used instead.

     ghq.<url>.vcs
	 ghq  tries  to  detect  the  remote  repository's   VCS   backend   for
	 non-"github.com"  repositories.  With	this  option  you can explicitly
	 specify the VCS for the remote repository. The URL is	matched  against
	 '<url>' using 'git config --get-urlmatch'.
	 Accepted values are "git", "github" (an alias for "git"), "subversion",
	 "svn"	(an  alias  for  "subversion"), "git-svn", "mercurial", "hg" (an
	 alias for "mercurial"), "darcs",  "fossil",  "bazaar",  and  "bzr"  (an
	 alias for "bazaar").
	 To  get  this configuration variable effective, you will need Git 1.8.5
	 or higher.

     ghq.<url>.root
	 The "ghq" tries to detect the remote  repository-specific  root  direc-
	 tory.	With this option, you can specify a repository-specific root di-
	 rectory instead of the common ghq root directory.
	 The URL is matched against '<url>' using 'git config --get-urlmatch'.

   Example configuration (.gitconfig):
	 [ghq "https://git.example.com/repos/"]
	 vcs = git
	 root = ~/myproj

ENVIRONMENT VARIABLES
     GHQ_ROOT
	 If set to a path, this value is used as the only root directory regard-
	 less of other existing ghq.root settings.

DIRECTORY STRUCTURES
     Local   repositories   are   placed    under    'ghq.root'    with    named
     github.com/user/repo.

	 ~/ghq
	 |-- code.google.com/
	 |   `-- p/
	 |	 `-- vim/
	 `-- github.com/
	     |-- google/
	     |	 `-- go-github/
	     |-- motemen/
	     |	 `-- ghq/
	     `-- urfave/
		 `-- cli/

INSTALLATION
   macOS
	 brew install ghq

   Void Linux
	 xbps-install -S ghq

   GNU Guix
	 guix install ghq

   Windows + scoop
	 scoop install ghq

   go get
	 go install github.com/x-motemen/ghq@latest

   conda
	 conda install -c conda-forge go-ghq

	 asdf plugin add ghq
	 asdf install ghq latest

	 mise install ghq
	 mise use ghq

   build
	 git clone https://github.com/x-motemen/ghq .
	 make install

     Built	binaries     are     available	   from     GitHub     Releases.
     https://github.com/x-motemen/ghq/releases

HANDBOOK
     You can buy "ghq-handbook" from Leanpub for more detailed usage.

     https://leanpub.com/ghq-handbook

     The source Markdown files of this book are also available for free from the
     following repository.

     https://github.com/Songmu/ghq-handbook

     Currently, only Japanese version available. Your translations are welcome!

AUTHOR
     *	 motemen motemen@gmail.com

	 *   https://github.com/sponsors/motemen

     *	 Songmu y.songmu@gmail.com

	 *   https://github.com/sponsors/Songmu

				   2026-08-01				  GHQ(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ghq&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help