All checks were successful
learn org at code.softwareshinobi.com/git.softwareshinobi.com/pipeline/head This commit looks good
222 lines
6.6 KiB
Markdown
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) |