git 하위 디렉터리, 폴더만 클론(clone) 하기
git 저장소의 my-proj 라는 프로젝트내 폴더 구조가 다음과 같다.
- src
- main
- java
- test
- java
- main
- docs
- script
- sys-script
- config
- user-script
- user1
- sys-script
다른 서버에서 이 프로젝트의 sys-script 와 하위 폴더, user-script/user1과 하위 폴더만 필요하다. 기본적으로 clone 하면 모든 폴더가 복제되지만 git 1.7부터 추가된 sparse checkout 이라는 기능을 사용하면 원하는 경로의 디렉터리나 파일만 복제할 수 있다.
clone 할 로컬 저장소를 만든다.
git init my-proj cd my-proj
sparse Checkout 이 가능하도록 설정한다.
git config core.sparseCheckout true
remote 를 추가한다.
git remote add -f origin <REMOTE_URL>
checkout 하기 원하는 파일이나 폴더를 .git/info/sparse-checkout 파일에 기술하면 된다. 폴더일 경우 자동으로 하위 폴더가 포함된다.
echo "script/sys-script" >> .git/info/sparse-checkout echo "script/user-script/user1" >> .git/info/sparse-checkout
이제 pull 로 원격 저장소에서 파일을 가져오면 sparse-checkout 에 기술한 경로의 파일만 가져온다.
git pull origin master