GLab
GLab is an open source GitLab CLI tool bringing GitLab to your terminal next to where you are already working with git
and your code without switching between windows and browser tabs. Work with issues, merge requests, watch running pipelines directly from your CLI among other features.
glab
is available for repositories hosted on GitLab.com and self-managed GitLab instances. glab
supports multiple authenticated GitLab instances and automatically detects the authenticated hostname from the remotes available in the working Git directory.
Table of contents
Usage
glab <command> <subcommand> [flags]
Demo
Documentation
Read the documentation for usage instructions or check out glab help
.
Installation
Download a binary suitable for your OS at the releases page.
Other installation methods depend on your operating system.
macOS
-
Homebrew (officially supported)
- Install with:
brew install glab
- Update with:
brew upgrade glab
-
MacPorts:
- Install with:
sudo port install glab
- Update with:
sudo port selfupdate && sudo port upgrade glab
-
Install into usr/bin
with a shell script:
curl -s "https://gitlab.com/gitlab-org/cli/-/raw/main/scripts/install.sh" | sudo sh
Before running any install script, review its contents.
Windows
- WinGet
- Install with:
winget install glab.glab
- Update with:
winget install glab.glab
- scoop
- Install with:
scoop install glab
- Update with:
scoop update glab
- Download an EXE installer or the
glab.exe
binary from the releases page
Linux
Homebrew
Installing from Homebrew is the officially supported installation method for Linux.
- Install with:
brew install glab
- Update with:
brew upgrade glab
To install glab
from the Snap Store:
- Make sure you have snap installed on your Linux distribution.
- Install the package:
sudo snap install --edge glab
- Grant
glab
access to SSH keys: sudo snap connect glab:ssh-keys
Arch Linux
For Arch Linux, glab
is available:
Alpine Linux
glab
is available on the Alpine Community Repository as glab
.
When installing, use --no-cache
so no apk update
is required:
apk add --no-cache glab
Install a pinned version from edge
To ensure that by default edge is used to get the latest updates. We need the edge repository in /etc/apk/repositories
.
Afterwards you can install it with apk add --no-cache glab@edge
We use --no-cache
so an apk update
is not required.
echo "@edge http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories
apk add --no-cache glab@edge
Alpine Linux Docker-way
Use edge directly
FROM alpine:3.13
RUN apk add --no-cache glab
Fetching latest glab version from edge
FROM alpine:3.13
RUN echo "@edge http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories
RUN apk add --no-cache glab@edge
Nix/NixOS
Nix (NixOS) users can install from nixpkgs:
nix-env -iA nixos.glab
MPR (Debian/Ubuntu)
glab
is available inside the makedeb package repository. To install, run the following:
git clone 'https://mpr.makedeb.org/glab'
cd glab/
makedeb -si
Prebuilt-MPR
The above method downloads glab from source and builds it before packaging it into a .deb
package. If you don't want to compile or just want a prebuilt package, you can also install glab from the Prebuilt-MPR.
First set up the Prebuilt-MPR on your system, and then run the following:
sudo apt install glab
Spack
spack install glab
Updating (Spack):
spack uninstall glab && spack install glab
Building from source
If a supported binary for your OS is not found at the releases page, you can build from source:
Prerequisites for building from source
-
Verify that you have Go 1.13+ installed
$ go version
go version go1.14
If go
is not installed, follow instructions on the Go website.
-
Clone this repository
git clone https://gitlab.com/gitlab-org/cli.git glab
cd glab
If you have $GOPATH/bin
or $GOBIN
in your $PATH
, you can just install with make install
(install glab in $GOPATH/bin
) and skip steps 3 and 4.
-
Build the project:
make
-
Change PATH to find newly compiled glab
export PATH=$PWD/bin:$PATH
-
Run glab version
to confirm that it worked.
Authentication
Get a GitLab access token at https://gitlab.com/-/profile/personal_access_tokens or
https://gitlab.example.com/-/profile/personal_access_tokens
if self-managed:
- Start interactive setup:
glab auth login
- Authenticate with the method appropriate for your GitLab instance:
- For GitLab SaaS, authenticate against
gitlab.com
by reading the token
from a file: glab auth login --stdin < myaccesstoken.txt
- For self-managed instances, authenticate by reading from a file:
glab auth login --hostname salsa.debian.org --stdin < myaccesstoken.txt
- Authenticate with token and hostname:
glab auth login --hostname gitlab.example.org --token xxxxx
Not recommended for shared environments.
Configuration
By default, glab
follows the XDG Base Directory Spec:
-
The global configuration file is saved at ~/.config/glab-cli
.
-
The local configuration file is saved at .git/glab-cli
in the current working Git directory.
-
Advanced workflows may override the location of the global configuration by setting the GLAB_CONFIG_DIR
environment variable.
-
To set configuration globally
glab config set --global editor vim
-
To set configuration for current directory (must be a Git repository)
glab config set editor vim
-
To set configuration for a specific host
Use the --host
flag to set configuration for a specific host. This configuration is always stored in the global configuration file, with or without the global
flag.
glab config set editor vim --host gitlab.example.org
Environment variables
GITLAB_TOKEN
: an authentication token for API requests. Setting this avoids being
prompted to authenticate and overrides any previously stored credentials.
Can be set in the config with glab config set token xxxxxx
GITLAB_URI
or GITLAB_HOST
: specify the URL of the GitLab server if self-managed (eg: https://gitlab.example.com
). Default is https://gitlab.com
.
GITLAB_API_HOST
: specify the host where the API endpoint is found. Useful when there are separate (sub)domains or hosts for Git and the API endpoint: defaults to the hostname found in the Git URL
REMOTE_ALIAS
or GIT_REMOTE_URL_VAR
: git remote
variable or alias that contains the GitLab URL.
Can be set in the config with glab config set remote_alias origin
VISUAL
, EDITOR
(in order of precedence): the editor tool to use for authoring text.
Can be set in the config with glab config set editor vim
BROWSER
: the web browser to use for opening links.
Can be set in the configuration with glab config set browser mybrowser
GLAMOUR_STYLE
: environment variable to set your desired Markdown renderer style
Available options are (dark
|light
|notty
) or set a custom style
NO_COLOR
: set to any value to avoid printing ANSI escape sequences for color output.
FORCE_HYPERLINKS
: set to 1
to force hyperlinks to be output, even when not outputing to a TTY
Issues
If you have an issue: report it on the issue tracker
Contributing
Feel like contributing? That's awesome! We have a contributing guide and Code of conduct to help guide you.