ssh를 사용해 git clone 하기

깃허브에서 클론 할 수 있는 방법 2가지(ssh, pat)를 정리한다

ssh로 클론

ssh key 생성

  • git bash를 실행하여 진행한다
git bash terminal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent
# 새로운 ssh 키 생성
# 생성할 때 파일명과 비밀번호를 지정해 줄 수 있다
# 비밀번호는 입력하지 않는다 (엔터키로 스킵)
# 비밀번호까지 지정해주고 싶으면 아래 링크를 참고하자
# https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh/working-with-ssh-key-passphrases
# -C 옵션 뒤에는 자신의 이메일 등 적고 싶은 문구를 적는다
# ssh-keygen -t ed25519 -C "chin_sung@naver.com"
ssh-keygen -t ed25519 -C "안녕하세요요요요요"

cd ~/.ssh
# 공개키 내용을 전부 복사한다
cat id_ed25519.pub
# output: ssh-ed25519 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx chin_sung@naver.com
  • 나는 기본값으로 생성했다
  • ~/.ssh/id_ed25519
  • ~/.ssh/id_ed25519.pub
  • .pub 파일이 이제 깃허브에 등록해야 하는 공개키이다
  • cat 명령으로 읽어서 복사해두자

ssh key 등록

참고

PAT으로 클론

terminal
1
2
# git clone https://{pat}@github.com/{username}/{repo}
git clone https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@github.com/chinsun9/my-private-repo.git
  • personal access token으로도 클론 할 수 있다. 자세히

github action practice

깃허브 액션~!
내 프로젝트가 다른 환경에서도 잘 동작하는지 확인해보자

.github/workflows/github-actions.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
name: github actions practice

on:
workflow_dispatch:
branches: [master]

jobs:
test:
runs-on: ${{matrix.os}}

strategy:
matrix:
os: [ubuntu-latest, macos-latest] # https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
node-version: [10.x, 11.x, 12.x, 13.x, 14.x, 15.x, 16.x]

steps:
- uses: actions/checkout@v2 # 레포 클론할 때 필요

- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2 # 노드
with:
node-version: ${{ matrix.node-version }}

- name: Install Rest Dependencies
run: npm install

- name: Initiate Test
run: npm test
  • name ; 원하는 이름을 설정해준다
  • on ; 워크플로를 트리거하는 이벤트를 지정한다 (실행 조건)
    • on: push ; 이렇게 단일 값을 지정해 줄 수 있다
    • on: [push, pull_request] ; 배열 값으로 지정해 줄 수도 있다
    • 나는 workflow_dispatch를 사용했는데, 이거를 사용하면 수동으로 워크플로우를 시작해야 한다. 깃허브 액션은 사용량 제한이 있어서 일단 아끼고 본다
  • jobs.<job_id>.strategy.matrix ; 워크플로를 실행할 환경을 설정한다
  • jobs.<job_id>.setps[*].uses ; actions/checkout@v2, actions/setup-node@v2를 사용했다. actions/checkout@v2은 현재 레포를 테스트 환경으로 클론 할 때 필요한 것이고, actions/setup-node@v2는 노드 버전을 구성하는데 권장하는 방법이라고 한다
  • jobs.<job_id>.steps[*].run ; 원하는 cli를 설정할 수 있다
  • jobs.<job_id>.steps[*].name ; 각 단계에 이름을 붙여줄 수 있다. 깃허브 액션 페이지에서 로그를 식별할 때 도움을 준다

참고

github dot key

  • 레포를 로컬에 클론하지 않고도 코드를 탐색해 볼 수 있다
  • 아무 저장소에서 . (dot) key 를 눌러서 열어볼 수 있다
  • 처음 켜지는데 시간이 조금 걸린다

참고

깃허브에서 검색할 때 포크 저장소 포함하기

깃허브에서 저장소를 검색할 때, 포크 저장소는 검색되지 않는다
github advanced search를 사용해서 검색해보자

상황

  • 원본 레포가 업데이트가 없어서 포크를 확인하고 싶었다
  • 그런데 기본적인 깃허브 검색으로는 포크가 검색되지 않았다

  • 검색 결과 왼쪽 칼럼 하단을 보면 advanced search 버튼이 있다

  • 여러 검색 옵션들이 있는데, 포크를 포함하여 검색하기 위해 and including forks. 로 설정했다

  • 이제 포크가 포함되어 검색되는 것을 확인할 수 있다
  • 검색 결과 화면에서 정렬을 사용할 수 있다
  • 나는 스타가 많은 순으로 정렬하여 인기 있는 포크를 확인할 수 있었다

git config by workspace

  • 보통 global로 설정된 user.name, uesr.email이 있을 것이다
  • 깃 프로젝트 워크스페이스 별로 다른 계정을 사용해보자
terminal
1
2
3
4
5
# git config user.name {username}
git config user.name chinsun9

# git config user.email {email}
git config user.email chin_sung@naver.com
  • 글로벌로 설정된 이름, 이메일 대신, 다른 계정을 사용하고 싶은 워크스페이스로 가서 위 명령을 실행한다

참고

깃허브 템플릿 저장소 만들기

템플릿 레포를 만들어보자

  • 리액트 프로젝트를 진행할 때, CRA 같은 보일러플레이트로 프로젝트를 시작할 수 있다
  • 근데 자신만의 린트 설정이나, 따로 설치하는 패키지들이 있다
  • 이런 것들을 매번 새로운 프로젝트를 생성할 때마다 해준다면 귀찮을 것이다
  • 이때 깃허브에서는 템플릿 저장소 기능을 활용할 수 있다

템플릿 저장소 하나 만들기

  • 템플릿으로 만들 저장소를 만들고,
  • 원하는 초기 상태를 세팅한다

  • Settings 탭에 들어가면 레포명 설정 아래 바로 템플릿 레포로 지정할 수 있는 체크박스가 있다
  • 체크 박스를 체크하면 템플릿 레포 완성이다

템플릿을 사용해서 새 저장소 생성하기

  • 템플릿으로 설정한 저장소를 선택할 수 있다

다른 사람이 만들어둔 템플릿 사용하기

  • 다른 사람이 만들어 둔 템플릿 레포가 있을 수 있는데,
  • 포크해서 내 저장소로 가져오면 바로 사용이 가능하다

참고

perssonal access token으로 비공개 레포 git clone 하기

1
git clone https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@github.com/chinsun9/my-private-repo.git
1
2
3
4
git clone https://github.com/chinsun9/my-private-repo.git
Cloning into 'my-private-repo'...
Username for 'https://github.com': chinsun9
Password for 'https://chinsun9@github.com': xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  • 이런 식으로 패드워드 대용으로 사용해도 되지만,
  • github.com 앞에 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@
  • 토큰@를 붙여서 cli에서 입력하는 과정을 스킵할 수 있다
  • 이때 사용하는 토큰은 repo: Full control of private repositories 권한이 필요하다

커밋 메시지 작성을 도와줄 확장도구 vscode-conventional-commits

상황

  • 기존에 Visual Studio Code Commitizen Support 확장 도구를 사용하고 있었다
  • 그런데 커밋 body에 적는 내용이 어째선지 반영되지 않았다…
  • 관련해서 구글링을 해봤는데 도움되는 내용을 찾지 못했다
  • 그러다가 다른 확장도구를 발견했다

Conventional Commits

  • Conventional Commits이라는 확장도구이다
  • 사용법은 Commitizen과 동일하다
  • 이 확장도구를 사용하면 body(description)가 정상적으로 등록된다!

참고