git clone 명령어는 원격 저장소의 복사본을 로컬 컴퓨터에 생성합니다. 기본적으로 clone 명령어는 저장소 이름과 동일한 폴더에 코드를 저장하며, 저장소 URL 뒤에 폴더 이름을 지정하면 이를 변경할 수 있습니다.
다른 곳에 저장된 Git 저장소의 로컬 복사본을 만드는 것은 Git 버전 관리 시스템의 핵심적인 부분입니다.
git clone 명령어를 사용하면 다른 곳에 저장된 저장소의 로컬 복사본을 만들 수 있습니다. 이렇게 만든 복사본을 흔히 "클론(clone)"이라고 부릅니다.
이 글에서는 git clone 명령어의 기본 개념을 살펴보고, 로컬 및 원격 저장소를 클론하는 방법과 베어(bare) 저장소를 클론하는 방법까지 알아보겠습니다.
git clone 명령어란?
git clone 명령어는 기존에 존재하는 저장소의 복사본을 로컬 컴퓨터의 작업 디렉토리에 생성합니다.
클론은 Git의 핵심 기능 중 하나입니다. 클론을 사용하면 메인 버전과 독립적인 코드 복사본을 만들 수 있기 때문입니다. 이 복사본을 통해 로컬 머신에서 자유롭게 코드를 실행하고 수정할 수 있으며, 이때 발생하는 변경 사항은 메인 버전에 전혀 영향을 주지 않습니다.
즉, 준비가 될 때까지는 저장소에 아무런 변경도 가하지 않아도 됩니다. 작업이 끝난 후에는 변경 사항을 원격 저장소에 푸시(push)하여 저장하거나, 풀 리퀘스트(pull request)를 생성해 다른 사람에게 코드 리뷰를 요청할 수 있습니다.
Git으로 저장소를 구성하는 방법은 두 가지가 있습니다. 기존 저장소를 git clone 명령어로 복제하거나, git init 명령어로 새로운 저장소를 생성하는 것입니다.
저장소 클론은 보통 한 번만 수행하면 됩니다. 저장소를 한 번 클론해두면 Git 저장소와 함께 작업하는 데 필요한 모든 코드가 로컬 머신에 준비됩니다.
git clone 명령어는 저장소와 연관된 모든 메타데이터를 함께 복제합니다. 따라서 저장소를 클론하면 프로젝트의 전체 히스토리 기록을 갖게 되며, 프로젝트와 연관된 모든 Git 브랜치도 함께 복제됩니다.
git clone 사용 방법
git clone 명령어는 기존 저장소의 클론을 로컬 머신의 새로운 디렉토리에 생성합니다. 저장소를 로컬로 클론하면 해당 저장소의 코드가 저장될 새로운 환경이 만들어집니다.
예시를 통해 git clone 명령어로 저장소를 클론하는 과정을 살펴보겠습니다. GitHub에 있는 저장소를 로컬 머신으로 가져오려는 상황을 가정해 봅시다.
이 경우 다음과 같은 명령어로 프로젝트를 클론할 수 있습니다:
git clone https://github.com/username/project-name.git cd project-name
첫 번째 명령어는 지정한 GitHub URL에 저장된 저장소를 기반으로 새로운 Git 저장소를 생성합니다. 코드가 담기는 폴더의 이름은 저장소 이름과 동일합니다. 위 예시에서는 Git이 project-name이라는 폴더를 생성합니다.
그다음 cd 명령어로 새로 만든 Git 저장소 안으로 이동합니다. 이제 새 저장소를 열어볼 수 있으므로 파일을 조회하고 수정하는 작업을 시작할 수 있습니다.
커스텀 클론 옵션 활용하기
git clone 명령어는 몇 가지 파라미터를 받을 수 있으며, 이를 활용하면 다양한 커스텀 클론 작업을 수행할 수 있습니다. git clone을 사용할 때 알아두면 유용한 주요 커스텀 옵션들을 살펴보겠습니다.
특정 폴더에 클론하기
기본적으로 클론된 저장소와 같은 이름의 폴더가 생성됩니다. 앞선 예시에서는 폴더 이름을 지정하지 않고 저장소를 클론했기 때문에 결과물 폴더 이름이 저장소 이름 그대로 사용되었습니다.
하지만 저장소를 클론할 때 특정 폴더에 넣고 싶은 경우가 있습니다. 이럴 때는 클론 대상 디렉토리 이름을 직접 지정하면 됩니다.
git clone 명령어에 두 번째 인자를 추가하여 실행할 수 있습니다:
git clone <repo> <folder>
예를 들어, 가상의 Git 저장소 내용을 "my-project"라는 폴더에 클론하고 싶다면 다음과 같이 작성합니다:
git clone https://github.com/username/project-name.git my-project cd my-project
먼저 첫 번째 명령어가 참조한 GitHub 저장소를 클론합니다. 여기서는 폴더 이름으로 "my-project"를 지정했으므로 저장소 코드가 해당 폴더에 복제됩니다. 이후 cd 명령어로 git clone이 생성한 my-project 폴더로 이동합니다.
얕은 클론(Shallow Clone) 생성하기
기본적으로 저장소를 클론하면 저장소의 전체 히스토리도 함께 복제됩니다. 프로젝트에 수백 개의 커밋이 쌓여 있다면 로컬 클론을 생성하는 데 시간이 오래 걸릴 수 있습니다.
전체 저장소를 복제하는 과정을 생략하려면 얕은 클론(shallow clone)을 생성하면 됩니다. 얕은 클론은 depth 파라미터로 지정한 커밋 히스토리만큼만 복제합니다.
얕은 클론을 생성하는 문법은 다음과 같습니다:
git clone --depth=1 <repo>
depth 파라미터 값은 클론하려는 히스토리 커밋의 개수를 의미합니다. 위 예시에서는 depth 값을 1로 지정했으므로, clone 명령어는 가장 최근 커밋 하나만 로컬 머신에 복사합니다.
가상의 GitHub 저장소에 10,000개의 커밋이 있다고 가정해 봅시다. 전체를 복사하려면 상당한 시간이 걸릴 것입니다. 하지만 우리는 저장소의 전체 히스토리 없이 현재 코드와 최근 10개의 커밋만 클론하고 싶습니다. 이 경우 다음과 같이 작성하면 됩니다:
git clone --depth=10 https://github.com/username/project-name.git
위 명령어는 프로젝트의 현재 상태 복사본을 생성합니다. 저장소 히스토리에서 최대 10개의 커밋까지 거슬러 올라갈 수 있지만, 그 이전의 커밋 데이터는 포함되지 않습니다.
고급 설정 옵션에 대해 더 알고 싶다면 git clone 명령어 관련 공식 Git 문서를 참고하세요.
Git URL 종류
git clone 명령어는 여러 가지 유형의 URL을 지원합니다. git clone은 주로 원격 저장소를 클론할 때 사용되므로, Git이 지원하는 주요 URL 유형을 살펴보겠습니다.
Git 프로토콜
git 프로토콜은 Git 버전 관리 시스템을 사용해 저장소를 클론할 때 쓰입니다. git 프로토콜은 별도의 인증 절차를 사용하지 않습니다. Git 버전 관리 시스템을 사용하는 URL의 예시는 다음과 같습니다:
git://host.com/repo/path.git
URL이 "git:"으로 시작하면 Git 클라이언트가 git 프로토콜을 사용해 저장소를 클론합니다.
SSH
SSH(Secure Shell)는 네트워크 서버에 원격으로 접속할 수 있게 해주는 프로토콜입니다. SSH는 인증 기능을 제공하므로, SSH URL은 보안이 필요한 Git 저장소에 자주 사용됩니다. SSH 프로토콜을 사용하는 Git URL의 예시는 다음과 같습니다:
ssh://user@host.com/repo/path.git
위 예시에서 "user"는 특정 저장소에 접근하려는 사용자의 이름을 나타냅니다. SSH를 통한 저장소 클론은 반드시 로그인 후에 가능합니다.
HTTP
HTTP(HyperText Transfer Protocol)는 인터넷을 통해 웹 페이지 데이터를 전송하는 데 사용되는 프로토콜입니다. HTTP URL은 Git 저장소에서도 널리 사용됩니다. HTTP를 사용하는 Git URL의 예시는 다음과 같습니다:
https://host.com/repo/path.git
위 예시의 저장소는 HTTPS 프로토콜을 사용합니다. "git"이나 "ssh" 대신 Git 저장소 URL의 시작 부분에 "https"를 지정합니다.
마무리
git clone 명령어는 Git 저장소의 로컬 복사본을 생성하는 데 사용됩니다. 클론을 활용하면 저장소의 독립적인 복사본을 만들어, 메인 프로젝트 버전에 영향을 주지 않으면서 자유롭게 수정 작업을 진행할 수 있습니다.
변경 사항을 프로젝트의 메인 버전에 반영할 준비가 되었다면 커밋(commit)을 생성하면 됩니다.
이번 글에서는 예시와 함께 git clone 명령어의 사용법을 살펴보았습니다. 이제 여러분도 전문 개발자처럼 git clone으로 저장소를 클론할 수 있습니다!