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으로도 클론 할 수 있다. 자세히

git clone 커밋 히스토리없이 가볍게 클론하기

terminal
1
git clone --depth 1 https://github.com/chinsun9/refactor-2019T1.git
  • git clone을 통해 클론하게되면 .git 폴더도 같이 딸려온다
  • .git 폴더없이 최신 상태만 가져오고싶을 때 어떻게 할까 찾아보다가
  • --depth 옵션을 알게되었다
  • --depth 1 하게되면 가장 마지막 상태만 클론하게된다

참고

github 저장소 복제

1
2
3
4
5
6
7
git clone --bare -b docker --single-branch  https://github.com/chinsun9/2020-web-test.git

cd 2020-web-test.git
git push --mirror https://github.com/chinsun9/2020-web-test-mirror.git

cd ..
rmdir /s 2020-web-test.git
  • 우선 터미널에서 작업하기 전에 새로운 깃허브 저장소를 하나 생성한다.(복제될 저장소)
  • 2020-web-test의 docker 브랜치를 bare clone 한다

  • bare clone하게되면 소스코드가 보이지않고 이런 요상한 파일들이 보인다
  • 평범히 클론했다면 .git 디렉터리에 있는 내용들이다
  • cd 2020-web-test.git로 들어가주고
  • git push --mirror https://github.com/chinsun9/2020-web-test-mirror.git
  • 새로운 저장소로 mirror옵션을 주고 푸쉬하게되면 커밋내역까지 똑같이 저장소가 복제된다

  • 오른쪽이 복제한 저장소이고, 복제한 저장소에서 하나의 커밋을 하였다
  • rmdir /s 2020-web-test.git 이제 이 쓸모없는 디렉터리는 삭제하고
  • 복제한 저장소를 git clone https://github.com/chinsun9/2020-web-test-mirror.git 클론해서 사용하면된다

용도?

  • 퍼블릭 저장소에 올렸던 프로젝트를 계속 이어하는데
  • dbconfig파일이나, 보여주고싶지않은 정보가 있을 수 있다
  • 처음에는 비공개 브랜치? 이런 키워드로 찾아봤었는데, 그런 기능은 없었다
  • 프로젝트를 통째로 복사해서 새롭게 git init 하는 방법도 있는데,
  • 이 방법을 통해서 커밋내역을 유지하면서 복제할 수 있었다

참고

특정 브랜치 클론하기

1
2
3
git clone -b {브랜치명} --single-branch {저장소}

git clone -b docker --single-branch https://github.com/chinsun9/2020-web-test.git
  • 저장소에 여러 브랜치가 있는데, 특정 하나의 브랜치만 클론하고 싶을때!

git clone -b docker –single-branch https://github.com/chinsun9/2020-web-test.git