git 로 브랜치 하나만 clone 하기

git 를 사용하다보면 때때로 저장소 전체가 아니라 특정 브랜치 하나만 받고 싶을 때가 있다. svn 의 경우 디렉토리 단위로 받을 수가 있고, 브랜치도 하나의 디렉토리이기 때문에 별 어려움이 없었다. 하지만 git 에서는 이것을 어떻게 해야 할지 궁금했다.

구글링을 해 본 결과 clone 옵션 중에 -b(또는 --branch) 가 있었다. -b 옵션이 없으면 master 브랜치를 가져오고, -b 옵션이 있으면 해당 브랜치를 가져온다.

  • git clone URL -b branch_name [dir]

그런데 사실 이것은, 저장소 전체를 가져와 HEAD 를 해당 브랜치로 바꾸는 것 뿐이다. 다시 말해서, HEAD 가 master 를 가리키는 것이 아니라 해당 브랜치를 가리키는 것이다. 결국 clone 하고나서 해당 브랜치를 checkout 한 것과 동등하다. git branch -r 을 해보면 전체 브랜치들이 모두 보인다.

그렇다면 실제로 해당 브랜치만 가져올 수는 없을까 ? 1.7.10(?) 부터 --single-branch 옵션이 추가되었다. 이 옵션을 사용하면 저장소 중에서 해당 브랜치만 clone 한다.

  • git clone URL -b branch_name --single-branch [dir]

이것을 실행하고 나서 git branch -r 을 해보면 해당 브랜치만 나오는 것을 확인할 수 있다.

전체 저장소가 아니라 해당 브랜치에서만 작업하기를 원한다면 --single-branch 가 맞춤옵션이다. 게다가 전송 시간도 줄어들고 저장 장치에서 차지하는 용량도 줄어드니 더욱 좋다.

댓글

이 블로그의 인기 게시물

토렌트: < 왕좌의 게임 > 시즌 1 ~ 시즌 8 완결편 마그넷

토렌트: < 스타워즈 > Ep.1 ~ Ep.6 마그넷

토렌트: NGC < 코스모스 > 우리말 더빙 전편(1편~13편) 마그넷