[macOS]
얼레벌레 Git 인생 .. ! 인증부터 차근차근 배워보자.
처음으로 git 을 연결하고 local에서 push하려고 하면 인증하지 않으면 push가 안된다.
원격을 조정할 수 있는 사용자라는 것을 인증해야 함.
‼️시작전
Git Hub > Settings > Password and Authentication > Two-factor authentication 이 부분에서 enable 상태 전제로 진행한다.
1) 직접 발급한 Personal Access Token (PAT) 방식
: CI/CD 환경에서 자주 사용된다고 한다.
2) SSH
: 보안 수준이 높음. 로컬에서 만든 SSH 키를 Git hub 설정에 직접 업로드 해줘야 함.
3) CLI로 인증 (OAuth 2.0)
: 가장 편리하고, 터미널 명령어로 전부 설정 가능하다. 갱신안해줘도 된다.
여태까지 항상 1번 방식으로 토큰 기간을 정해두고 사용해왔다.
그 이유는 토큰 무기한 연장으로 사용하면 토큰이 유출될 경우 보안이 뚫려서 였다. (훔쳐갈 건 없긴 하다;)
만료된 토큰은 계속 연장할 수 없고 신규로 발급받아야 하기 때문에 자주는 아니지만 귀찮은 일이었다.
그래서 편리한 3번 방식을 추천한다.
나는 여태까지 몰라서 못쓰고 있었음.
github CLI로 사용자 토큰 인증하는 법 (OAuth 2.0)
1) 터미널에서 git hub cli 를 설치한다.
터미널에서 아래 명령어를 입력 or 아래 사이트 접속해서 설치
brew install gh
GitHub CLI
Take GitHub to the command line
cli.github.com
아래 명령어를 입력했을 때 버전 정보가 뜬다면 설치가 잘된 것이다.
gh --version
# 버전 정보 출력
gh version 2.68.1
2) git hub 와 연결한다.
gh auth login
? Where do you use GitHub? GitHub.com
? What is your preferred protocol for Git operations on this host? HTTPS
? Authenticate Git with your GitHub credentials? Yes
? How would you like to authenticate GitHub CLI? Login with a web browser
! First copy your one-time code: xxxx-xxxx
Press Enter to open https://github.com/login/device in your browser...
순서대로 명령어 실행해주면 되는데, 마지막에 줄에서 엔터를 치면 아래 git hub 사이트가 켜진다.
그리고 위에 code : xxxx-xxxx < 이 부분 실제 코드를 화면에 복사하면 연결이 완료된다.
끝이다. 갱신해줄 필요도 없다. (wow)
위에서 login을 했으니 logout도 가능하다.
# 로그아웃하기
gh auth logout
✓ Logged out of github.com account 깃허브ID
# 로그인 상태 확인
gh auth status
위처럼 로그아웃을 했는데 git push 가 계속 되는 것을 확인했다.
내가 이전에 발급해둔 개인 토큰 때문인가 싶어서 토큰을 삭제했는데도 push가 됐다.
찾아보니 macOS는 키체인에서 git hub 인증정보가 저장되어있다는 것을 확인할 수 있었다.
아래 find 명령어를 실행하면 키체인을 찾고, delete 명령어를 실행하면 그 키체인을 삭제할 수 있다.
security find-internet-password -s github.com
security delete-internet-password -s github.com
그리고 push를 하니까
Username for 'https://github.com': 을 입력하라고 하면서 push가 막힌 것을 확인할 수 있었다.
필요하다면 위로 돌아가서 cli로 인증하면 된다.
++
gh 를 설치하면, git hub 에서 GUI 로 클릭하면서 작업해야하는 것을 터미널 명령어로 실행할 수 있다.
원격 레포지토리 신규 생성 후 클론
깃헙 사이트 에서 레포지토리를 만들고, 클론하는 작업을 https 복사해서 했었다면 gh 를 사용할 때는
명령어 1줄로 클론까지 가능하다.
# 원격 레포지토리 생성 후 로컬에 클론하기
gh repo create 신규레포이름 --public --clone
PR 생성
# PR 생성
gh pr create --title "새 기능 추가" --body "설명입니다."
# A브랜치를 main으로 PR 생성
gh pr create --base main --head A --title "A에서 Main으로 PR" --body "이 PR은 ~~를 수정합니다."