Git 기본 | git clone
git clone 명령
git clone은 기존의 Git 저장소의 복사본을 만드는 명령이다. 이 명령은 svn checkout과 유사하지만, 작업 사본이 자체적으로 완전한 Git 저장소를 구성하는 점이 다르고, 수정된 기록을 자체적으로 가지고 자신의 파일을 관리하고 원래 저장소와는 완전히 독립적인 환경을 제공한다.
이용자의 편의를 위해 clone를 하는 것은 원래의 저장소를 가리키는 origin이라는 이름으로 원격 연결이 자동으로 만들어진다. 이렇게 하면 매우 쉽게 중앙 저장소와 통신을 할 수 있다.
사용법
git clone <repo>
<repo>에 있는 저장소를 로컬 머신에 복제하는 명령이다. <repo>의 저장소는 같은 로컬 머신에 존재해도 되고, HTTP 혹은 SSH를 사용하여 액세스하는 원격 머신에 존재해도 상관 없습니다.
git clone <repo> <directory>
<repo>에 있는 저장소를 로컬 머신에 <directory>라는 이름의 폴더에 복제하는 명령이다.
보충 설명
중앙 저장소가 이미 작성되어 있는 경우는 git clone이 개발자의 작업 복사본을 만드는 가장 일반적인 명령이다. git init 명령뿐만 아니라 복제도 보통 일회성 작업으로 개발자가 일단 작업 복사본 (로컬 저장소)를 생성 한 후 로컬 저장소를 통해 모든 버전 관리 및 협업을 수행한다.
저장소 간 협업
Git에서 “작업 복사본"이 SVN 저장소에서 코드를 체크 아웃하여 얻어지는 작업 복사본과는 크게 다른 개념임을 이해해야 한다. SVN과는 달리 Git은 작업 복사본과 중앙 저장소 사이에 실질적인 차이가 있는 것이 아니라 양자 모두 완벽한 Git 저장소이다.
이를 통해 Git 협업 및 SVN 협업은 기본적으로 다른 것이다. SVN은 중앙 저장소와 작업 복사본 사이의 관계가 중요한 역할을 가지고 있지만, Git의 협력 모델은 저장소 간의 상호 작용적인 내용이다. SVN은 작업 사본을 중앙 저장소에 체크인하는 반면 Git은 하나의 저장소에서 다른 저장소에 커밋(commit)의 푸시(pugh) 또는 풀(pull)을 한다.
Git 튜토리얼 : 저장소 간의 협업
당연한 일이지만, 가지고 있는 Git 저장소에 특별한 의미를 부여 할 수 있다. 예를 들어, Git 저장소를 “중앙” 저장소를 지정하여 Git에서도 ‘중앙 집중식 워크 플로우’를 따라 할 수 있다. 중요한 것은 그것이 버전 관리 시스템 (VCS)와 물리적 연결 상태에서 구별하는 것이 아니라 Git은 단순한 약속으로 결정된다는 것이다.
사용 예
다음 예는 주소가 example.com에서 사용하는 SSH 사용자 이름이 john인 경우, 서버에 저장된 중앙 저장소의 작업 복사본을 만드는 방법을 보여준다 :
git clone ssh://john@example.com/path/to/my-project.git
cd my-project
# Start working on the project
첫 번째 행은 새 Git 저장소를 로컬 머신에서 my-project 폴더에 생성하고 그것을 초기화하고 그것을 중앙 저장소의 파일을 받아오는 명령이다.
이것이 완료되면 현재 디렉터리를 프로젝트로 이동하여 편집, 스냅 샷 커밋, 다른 저장소와 통신 등의 작업을 시작하게 된다.
또한, 복제된 저장소는 .git 확장자가 추가되지 않는다. 이것은 로컬 복사본이 베어 저장소가 아닌 상태에 있다는 것을 의미한다.