# GitHub CLI The GitHub CLI or `gh` is basically GitHub on command-line. You can interact with your GitHub account directly through your command line and manage things like pull requests, issues, and other GitHub actions. In this tutorial, I will give a quick overview of how to install `gh` and how to use it! ## GitHub CLI Installation As I will be using Ubuntu, to install `gh` you need to run the following commands: ```bash sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key C99B11DEB97541F0 sudo apt-add-repository https://cli.github.com/packages sudo apt update sudo apt install gh ``` If you are on a Mac, you can install `gh` using Homebrew: ```bash brew install gh ``` For any other operating systems, I recommend following the steps from the official documentation [here](https://github.com/cli/cli#installation). Once you have `gh` installed, you can verify that it works with the following command: ```bash gh --version ``` This would output the `gh` version: ``` gh version 1.0.0 (2020-09-16) https://github.com/cli/cli/releases/tag/v1.0.0 ``` In my case, I'm running the latest `gh` v1.0.0, which got released just a couple of days ago. ## Authentication Once you have `gh` installed, you need to login to your GitHub account. To do so, you need to run the following command: ```bash gh auth login ``` You will see the following output: ``` ? What account do you want to log into? [Use arrows to move, type to filter] > GitHub.com GitHub Enterprise Server ``` You have an option to choose between GitHub.com or GitHub Enterprise. Click enter and then follow the authentication process. Another useful command is the `gh help` command. This will give you a list with the available `gh` commands that you could use: ``` USAGE gh [flags] CORE COMMANDS gist: Create gists issue: Manage issues pr: Manage pull requests release: Manage GitHub releases repo: Create, clone, fork, and view repositories ADDITIONAL COMMANDS alias: Create command shortcuts api: Make an authenticated GitHub API request auth: Login, logout, and refresh your authentication completion: Generate shell completion scripts config: Manage configuration for gh help: Help about any command FLAGS --help Show help for command --version Show gh version EXAMPLES $ gh issue create $ gh repo clone cli/cli $ gh pr checkout 321 ENVIRONMENT VARIABLES See 'gh help environment' for the list of supported environment variables. LEARN MORE Use 'gh --help' for more information about a command. Read the manual at https://cli.github.com/manual FEEDBACK Open an issue using 'gh issue create -R cli/cli' ``` Then let's clone an existing project which we will use to play with. As an example, we can use the [LaraSail](https://github.com/thedevdojo/larasail) repository. Rather than cloning the repository using the standard `git clone` command, we will use `gh` to do so: ```bash gh repo clone thedevdojo/larasail ``` You will see the following output: ``` Cloning into 'larasail'... ``` After that `cd` into that folder: ```bash cd larasail ``` We are now ready to move to some of the more useful `gh` commands! ## Useful GitHub CLI commands Using `gh`, you can pretty much get all of the information for your repository on GitHub without having even to leave your terminal. Here's a list of some useful commands: ### Working with GitHub issues To list all open issues, run: ```bash gh issue list ``` The output that you will see is: ``` Showing 4 of 4 open issues in thedevdojo/larasail #25 Add option to automatically create database (enhancement) about 3 months ago #22 Remove PHP mcrypt as it is no longer needed about 3 months ago #11 Add redis support about 8 months ago #10 Wondering about the security of storing root MySQL password in /etc/.larasail/tmp/mysqlpass about 3 months ago ``` You can even create a new issue with the following command: ```bash gh issue create --label bug ``` Or if you wanted to view an existing issue, you could just run: ```bash gh issue view '#25' ``` This would return all of the information for that specific issue number: ``` Add option to automatically create a database Open • bobbyiliev opened about 3 months ago • 0 comments Labels: enhancement Add an option to automatically create a new database, a database user and possibly update the database details in the .env file for a specific project View this issue on GitHub: https://github.com/thedevdojo/larasail/issues/25 ``` ### Working with your GitHub repository You can use the `gh repo` command to create, clone, or view an existing repository: ```bash gh repo create gh repo clone cli/cli gh repo view --web ``` For example, if we ran the `gh repo view`, we would see the same README information for our repository directly in our terminal. ### Working with Pull requests You can use the `gh pr` command with a set of arguments to fully manage your pull requests. Some of the available options are: ``` checkout: Check out a pull request in git checks: Show CI status for a single pull request close: Close a pull request create: Create a pull request diff: View changes in a pull request list: List and filter pull requests in this repository merge: Merge a pull request ready: Mark a pull request as ready for review reopen: Reopen a pull request review: Add a review to a pull request status: Show status of relevant pull requests view: View a pull request ``` With the above commands, you are ready to execute some of the main GitHub actions you would typically take directly in your terminal! ### Conclusion Now you know what the GitHub CLI tool is and how to use it! For more information, I would recommend checking out the official documentation here: [https://cli.github.com/manual/](https://cli.github.com/manual/) I'm a big fan of all command-line tools! They can make your life easier and automate a lot of the daily repetitive tasks! Initially posted here: [What is GitHub CLI and how to get started](https://devdojo.com/bobbyiliev/what-is-github-cli-and-how-to-get-started)