git clone으로 원격 저장소 복제하기
새로운 프로젝트에 투입되거나 오픈소스에 기여하려면 먼저 원격 저장소의 코드를 내 컴퓨터에 가져와야 합니다.
이때 사용하는 명령어가 바로 git clone인데요.
원격 저장소의 모든 파일과 변경 이력을 통째로 복제해서 로컬에 동일한 저장소를 만들어줍니다.
git init vs. git clone
git init은 빈 Git 저장소를 새로 생성하는 명령어이고, git clone은 이미 존재하는 원격 저장소를 복사해오는 명령어입니다.
새 프로젝트를 처음부터 시작할 때는 git init을, 이미 존재하는 프로젝트에 참여할 때는 git clone을 사용한다고 보면 됩니다.
git clone을 실행하면 내부적으로 다음과 같은 작업이 자동으로 이루어집니다.
- 디렉토리 생성
git init으로 Git 저장소 초기화- 원격 저장소를
origin이라는 이름으로 등록 - 모든 파일과 커밋 이력 다운로드
- 기본 브랜치(보통
main) 체크아웃
이 모든 과정을 한 번의 명령어로 끝낼 수 있으니 상당히 편리하죠.
기본 사용법
git clone 명령어에 원격 저장소의 URL을 넘기면 됩니다.
$ git clone <저장소 URL>
예를 들어, GitHub에 있는 저장소를 복제한다면 이렇게 합니다.
$ git clone https://github.com/facebook/react.git
Cloning into 'react'...
remote: Enumerating objects: 250000, done.
remote: Counting objects: 100% (1500/1500), done.
remote: Compressing objects: 100% (800/800), done.
Receiving objects: 100% (250000/250000), 200.00 MiB | 15.00 MiB/s, done.
명령어를 실행하면 현재 디렉토리에 react라는 폴더가 만들어지고, 그 안에 모든 코드와 변경 이력이 들어갑니다.
디렉토리 이름 지정
기본적으로 저장소 이름으로 디렉토리가 생성되는데, 다른 이름을 사용하고 싶다면 URL 뒤에 원하는 디렉토리명을 추가합니다.
$ git clone https://github.com/facebook/react.git my-react-study
이렇게 하면 react 대신 my-react-study라는 이름의 디렉토리에 저장소가 복제됩니다.
프로젝트를 여러 용도로 복제해서 사용할 때 유용합니다.
HTTPS vs. SSH
git clone에 사용하는 URL은 크게 HTTPS와 SSH 두 가지 형식이 있습니다.
HTTPS 방식은 별도의 설정 없이 바로 사용할 수 있어서 편합니다.
$ git clone https://github.com/facebook/react.git
다만 private 저장소를 복제하거나 push할 때마다 인증이 필요한데, GitHub의 경우 Personal Access Token을 비밀번호 대신 사용해야 합니다.
SSH 방식은 한번 SSH 키를 등록해놓으면 이후에 별도의 인증 없이 사용할 수 있습니다.
$ git clone git@github.com:facebook/react.git
SSH 키를 아직 설정하지 않았다면 처음에 조금 번거롭지만, 매일 코드를 push/pull하는 개발자라면 SSH 방식이 훨씬 편합니다.
특정 브랜치만 복제
기본적으로 git clone은 모든 브랜치의 이력을 가져오지만, 특정 브랜치만 필요하다면 -b 옵션을 사용합니다.
$ git clone -b develop https://github.com/example/project.git
이렇게 하면 develop 브랜치가 체크아웃된 상태로 복제됩니다.
다른 브랜치의 이력도 함께 가져오긴 하지만, 시작 브랜치만 바뀌는 것입니다.
얕은 복제 (Shallow Clone)
오래된 프로젝트나 이력이 많은 저장소를 복제할 때는 시간이 상당히 오래 걸릴 수 있습니다.
전체 이력이 필요 없고 최신 코드만 빨리 받고 싶다면 --depth 옵션을 사용합니다.
$ git clone --depth 1 https://github.com/torvalds/linux.git
--depth 1은 가장 최근 커밋 하나만 가져오라는 의미입니다.
Linux 커널처럼 수십 년치 이력이 쌓인 저장소도 금방 복제할 수 있죠.
CI/CD 파이프라인에서 빌드할 때도 전체 이력이 필요 없는 경우가 많아서 shallow clone을 자주 사용합니다.
다만 얕은 복제 후에는 과거 커밋을 조회하거나 다른 브랜치의 이력을 확인하는 데 제약이 있으니, 개발 작업용으로는 일반 clone을 하는 게 좋습니다.
복제 후 확인
저장소를 복제한 뒤에는 제대로 가져왔는지 확인해보는 게 좋습니다.
$ cd react
$ git status
On branch main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean
git remote 명령어로 원격 저장소 연결 상태도 확인할 수 있습니다.
$ git remote -v
origin https://github.com/facebook/react.git (fetch)
origin https://github.com/facebook/react.git (push)
origin이라는 이름으로 원격 저장소가 자동 등록되어 있는 걸 볼 수 있습니다.
마치며
git clone은 Git을 사용하면서 가장 먼저 접하게 되는 명령어 중 하나입니다.
기본적인 사용법은 단순하지만, shallow clone이나 SSH 방식 같은 옵션을 알아두면 여러 상황에서 유용하게 쓸 수 있습니다.
더 자세한 내용은 Git 공식 문서를 참고하세요.
This work is licensed under
CC BY 4.0