TIL_171018 git, fork한 repo에서 특정 폴더만 갱신 'sparse checkout'
fork를 떠온 repo(원본)중, 내가 컨트리뷰트한 폴더 외, 특정 폴더도 pull할때마다 갱신되게 하기
sparce checkout
기본적으로 내가 포크를 뜬 레포 (포크레포)에는 remote가 origin master 하나만 설정되어 있고,
포크 떠온 레포(원본레포)에는 내가 컨트리뷰트한 폴더(내가 포크 레포에 생성한 폴더)외, 다른 폴더들이 많이 있다고 할 시,
포크 레포를 pull할때마다 원본레포의 특정 폴더만 포크레포의 폴더들과 함께 계속해서 내 로컬에 갱신되게 하는 방법이다.
‘sparse checkout’기능은 깃의 기본 기능이지만 비활성화 되어 있어 활성화 시켜주어야 함
12//포크 레포의 로컬에서 진행$ git config core.sparseCheckout true원본 레포의 리모트 설정
1234//origin 외, 주소가 있는지 확인$ git remote -v//없다면, 원본 레포 리모트 'upstream'이라는 별칭으로 추가$ git remote upstream http://원본레포-경로주소‘sparse checkout’은 포컬 레포의 로컬에서 .git/info/ 에 위치해야함.
12345678//.git은 숨김파일 -> echo명령어로$ echo "컨트리뷰트-폴더명" >> .git/info/sparse-checkout$ echo "원본레포-특정폴더명" >> .git/info/sparse-checkout// 해당 파일에 폴더명이 들어가있는지 들어가서 확인해보기//sparce-checkout에는 내가 입력한 폴더명이 입력되어 있어야함$ code .pull - 원본 레포의 폴더들이 내 로컬에 당겨짐
주의
원본레포에 있는 사항이 로컬에 저장되므로, 내가 컨트리뷰트한 폴더의 최신본이
아직 원본레포에 반영이 되어 있지 않는 경우를 조심해야함.1$ git pull upstream master
[참고] echo
- 쉘 명령어 ‘echo’는 “*“ 따옴표 안의 문자열을 터미널에 찍어줌.
- ‘>>’를 통해 이후에 들어오는 경로주소의 파일에 문자열을 입력할 수 있음.
- 경로주소에 해당 파일이 없을 시, 파일을 샏성 후 문자열을 입력