IT/OpenSource

[OpenSource] GitHub CLI, GitHub의 공식 CLI 프로젝트

wookiist 2021. 3. 12. 10:40

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를 누르면 웹 브라우저에서 다음의 화면이 열립니다.

image

아까 받은 일회용 토큰을 입력해줍시다. 그럼 아래와 같은 화면으로 넘어가는데, CLI를 사용하는 데에 필요한 권한을 요청하고 수락하는 과정입니다. Authorize github을 눌러줍시다.

image

그럼 한 번 더 access를 허용하겠냐고 물으면서 Password를 입력해달라고 뜹니다. 입력해 줍니다.

image

위와 같은 화면이 열리면 성공입니다.

이제 아까 사용하던 터미널로 돌아가보면 다음처럼 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 - - - -

마무리

만약 이 글이 도움이 되셨다면 글 좌측 하단의 하트❤를 눌러주시면 감사하겠습니다.

혹시라도 소개된 내용 중에 이상이 있거나, 이해가 가지 않으시는 부분, 또는 추가적으로 궁금하신 내용이 있다면 주저 마시고 댓글💬을 남겨주세요! 빠른 시간 안에 답변을 드리겠습니다 😊

참고

반응형