git을 하다 보면, pull, clone, fetch 등을 배우게 됩니다. 이 셋 중에서 이번 시간에는 clone에 대해 알아보겠습니다.

 


 clone을 한국 말로 번역하면 복제를 뜻합니다. 예를 들어, 원격에 있는 작업 내용이 있습니다. 이것을 그냥 복사만 하고 싶습니다. 그럴 때, clone을 쓰게 됩니다. 게임으로 치면, 설치를 하는 것? 정도로 비유할 수 있겠네요. 예를 하나 들어보겠습니다.

 

 gitExample 레포지토리에 README.md만 있어요. 저는 이 레포를 통째로 복사하고 싶어요. clone을 이용하면 됩니다.

 

 

 여기에 주소창이 있습니다. http://localhost:7775/... 어쩌고로 되어 있는데요. 저는 172.30.1.0/24 대역에서 gitlab이 설치된 서버에 원격 접속하는 것이니, localhost 대신에 ip 주소를 입력해야 합니다.

 

 

 요래 입력을 해 봅시다. 그러면, gitExample.git을 Cloning 하게 됩니다.

 

 

 README.md가 들어간 게 보이네요. 딱히 어려운 점은 없습니다.

 


 메인테이너인 cho2가 cho2.txt를 추가했다고 해 보겠습니다.

 

 cho2.txt에는 위와 같은 내용이 적혀져 있습니다. cho2에 의해서 변경된 내용을 다시 얻어오기 위한 방법 중에, 레포를 다시 받아오는 방법이 있습니다. Documents/folder2에 클론을 해 봅시다.

 

 그러고 나서 ls를 이용해서 보시면, 이번에는 README.md랑 cho2.txt가 있음을 볼 수 있어요. git clone은 remote에 있는 레포를 로컬에다가 그대로 복사하게 됩니다. 그러니, 레포에 cho2.txt를 추가하고 또 다시 clone을 하게 되면, cho2.txt가 있는 상태의 레포가 그대로 로컬에 복사되게 됩니다.

 


 그런데, 특정 브랜치만을 clone 해야 할 경우도 있습니다. 저는 cho_ex라는 브랜치를 하나 따서, 해당 브랜치에 cho_ex.txt를 추가하였습니다. 여기에는 ex branch라는 내용이 들어가 있습니다.

 

 이 브랜치만 클론해 오도록 하겠습니다.

 

 -b 옵션을 주고 --single-branch 옵션을 주면 됩니다. 위에서, git clone -b cho_ex --single-branch ~ 이런 식으로 주었는데요. 이것은, 클론을 할 건데, cho_ex라는 브랜치 하나를 clone 하겠다는 의미입니다.

 

 

 cho_ex라고 써져 있는 것을 보시면 됩니다.