Files
git.softwareshinobi.com/docs/025-github-cli.md
Software Shinobi 7134679e8c
All checks were successful
learn org at code.softwareshinobi.com/git.softwareshinobi.com/pipeline/head This commit looks good
automated terminal push
2025-06-05 19:28:46 -04:00

222 lines
6.6 KiB
Markdown

# 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 <command> <subcommand> [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 <command> <subcommand> --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)