GitHub CLI
gh
는 GitHub을 커맨드 라인으로 만나볼 수 있는 CLI 도구입니다. pull requests나 issues 등의 다양한 GitHub 기능을 터미널에서 이용할 수 있게 도와줍니다. GitHub CLI, gh
는 오픈 소스 프로젝트로 개발되고 있으며, 개발 언어 중에서는 Go가 약 99.7%를 차지하고 있습니다. GitHub CLI는 Go 오픈소스 프로젝트 중 하나입니다.
Installation
macOS
macOS 용 gh는 현재(2021.03.12) Intel 칩을 장착한 Mac에서만 네이티브로 이용이 가능합니다.
$ brew install gh
Windows
1. WinGet 이용
$ winget install gh
2. Chocolatey 이용
$ choco install gh
3. MSI Installer 이용
releases page에서 인스톨러를 다운로드 해서 설치하는 방법입니다. 아래 페이지로 가시면 모든 플랫폼의 릴리즈를 확인하실 수 있습니다.
https://github.com/cli/cli/releases
Ubuntu 계열
$ 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
Fedora, CentOS 계열
sudo dnf config-manager --add-repo https://cli.github.com/packages/rpm/gh-cli.repo
sudo dnf install gh
Usage
GitHub 로그인
우선, 로그인 하려는 account를 선택합니다. 일반적으로 GitHub.com
을 선택하시면 됩니다. 선택을 하실 때는 위, 아래 화살표 키를 이용하여 >
를 움직이실 수 있습니다.
? What account do you want to log into? [Use arrows to move, type to filter]
> GitHub.com
GitHub Enterprise Server
다음으로 Git 작업을 수행할 때 사용할 선호하는 프로토콜을 설정합니다. HTTPS
를 선택했습니다.
? What is your preferred protocol for Git operations? [Use arrows to move, type to filter]
> HTTPS
SSH
이번엔 GitHub credentials를 이용해 Git을 인증할 것인지 선택하라고 합니다. Y
를 입력해줍시다.
? Authenticate Git with your GitHub credentials? Yes
다음으론 GitHub CLI를 인증하기 위한 방법을 선택하라고 합니다. 웹 브라우저를 통해 로그인하는 방식(위)과 인증 토큰을 붙여넣는 방식(아래)이 있습니다. 저는 웹 브라우저를 통한 로그인 방식을 사용해보겠습니다.
? How would you like to authenticate GitHub CLI? [Use arrows to move, type to filter]
> Login with a web browser
Paste an authentication token
웹 브라우저 로그인을 사용하면, 다음과 같이 일회용 코드가 나오고 github.com을 열게 됩니다.`
? How would you like to authenticate GitHub CLI? Login with a web browser
! First copy your one-time code: 1234-43AB
- Press Enter to open github.com in your browser...
Enter를 누르면 웹 브라우저에서 다음의 화면이 열립니다.
아까 받은 일회용 토큰을 입력해줍시다. 그럼 아래와 같은 화면으로 넘어가는데, CLI를 사용하는 데에 필요한 권한을 요청하고 수락하는 과정입니다. Authorize github
을 눌러줍시다.
그럼 한 번 더 access를 허용하겠냐고 물으면서 Password를 입력해달라고 뜹니다. 입력해 줍니다.
위와 같은 화면이 열리면 성공입니다.
이제 아까 사용하던 터미널로 돌아가보면 다음처럼 Authentication이 완료되었다는 문구를 보실 수 있을 겁니다.
✓ Authentication complete. Press Enter to continue... (Enter 누르기)
- gh config set -h github.com git_protocol https
✓ Configured git protocol
✓ Logged in as wookiist (본인 GitHub nickname이 뜹니다.)
GitHub 로그아웃
만약 더 이상 GitHub CLI를 사용할 필요가 없다면 다음의 커맨드를 입력해서 로그아웃 해줍니다.
$ gh auth logout
Repository 리스트 확인하기
gh
의 다른 커맨드를 사용하려면 위치한 디렉터리가 git으로 관리하고 있는 디렉터리여야 합니다. .git
으로 초기화된 디렉터리에서 다음의 명령어를 입력해 봅니다.
$ gh repo list
wookiist/wookiist public 2021-03-11T14:45:24Z
wookiist/tistory wookiist.dev HTML/CSS public 2021-03-10T08:37:37Z
wookiist/ko Build and deploy Go applications on Kubernetes public, fork 2021-03-09T01:55:33Z
...(생략)
Repository 자세히 보기
이 명령어는 git 디렉터리에 위치하지 않아도 사용할 수 있습니다. 특정 Repository의 README를 바로 보여줍니다. 이번에는 cli/cli Repository를 한번 살펴 보겠습니다.
$ gh repo view cli/cli
cli/cli
GitHub’s official command line tool
GitHub CLI
gh is GitHub on the command line. It brings pull requests, issues, and
other GitHub concepts to the terminal next to where you are already working
with git and your code.
Image: screenshot of gh pr status → https://user-
images.githubusercontent.com/98482/84171218-327e7a80-aa40-11ea-8cd1-
5177fc2d0e72.png
GitHub CLI is available for repositories hosted on GitHub.com and GitHub
Enterprise Server 2.20+, and to install on macOS, Windows, and Linux.
## Documentation
See the manual https://cli.github.com/manual/ for setup and usage
instructions.
(중략)
View this repository on GitHub: https://github.com/cli/cli
Repository 만들기
gh
커맨드를 활용하면 현재 로컬에 만들어진 git 디렉터리를 바로 GitHub Repository로 만들 수 있습니다.
$ mkdir ~/gh-test
$ cd ~/gh-test
$ touch README.md
$ git init gh-test
# 현재 디렉터리의 이름을 가진 directory를 만들고 싶다면
$ gh repo create
# 특정 이름을 가진 repository로 만들고 싶다면
$ gh repo create gh-repo
# 특정 organization에 소속된 repository로 만들고 싶다면
$ gh repo create gh/gh-test
# issue와 wiki 기능을 사용하고 싶지 않다면
$ gh repo create --enable-issues=false --enable-wiki=false
다만, 만들어진 Repository를 삭제하는 기능은 gh
에 있지 않습니다. 따라서 삭제를 희망하실 때는 GitHub.com을 이용해주셔야 합니다.
이외에도 Repository를 clone
, fork
하는 작업도 수행할 수 있습니다.
이외의 기능
위에서 소개한 Repository 관리 기능 이외에도 정말 GitHub에서 제공하는 많은 기능을 CLI로 만나볼 수 있습니다. 본 포스트에선 모두 다루지는 않습니다만 매뉴얼을 참고하시어 한 번씩 사용해보시면 좋을 것 같습니다. 아래는 gh
에서 지원하는 기능 중 핵심적이라고 생각하는 기능을 표로 나타낸 것입니다.
pr | issue | release | gist | secret |
---|---|---|---|---|
checkout | close | create | clone | list |
checks | comment | delete | create | remove |
close | create | download | delete | set |
comment | delete | list | edit | - |
create | edit | upload | list | - |
diff | list | view | view | - |
edit | reopen | - | - | - |
list | status | - | - | - |
merge | view | - | - | - |
ready | - | - | - | - |
reopen | - | - | - | - |
review | - | - | - | - |
status | - | - | - | - |
view | - | - | - | - |
마무리
만약 이 글이 도움이 되셨다면 글 좌측 하단의 하트❤를 눌러주시면 감사하겠습니다.
혹시라도 소개된 내용 중에 이상이 있거나, 이해가 가지 않으시는 부분, 또는 추가적으로 궁금하신 내용이 있다면 주저 마시고 댓글💬을 남겨주세요! 빠른 시간 안에 답변을 드리겠습니다 😊