automated terminal push
All checks were successful
learn org at code.softwareshinobi.com/git.softwareshinobi.com/pipeline/head This commit looks good
All checks were successful
learn org at code.softwareshinobi.com/git.softwareshinobi.com/pipeline/head This commit looks good
This commit is contained in:
222
docs/025-github-cli.md
Normal file
222
docs/025-github-cli.md
Normal file
@@ -0,0 +1,222 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user