Post

SubTree

SubTree


  • 정의 : 하위 폴더 형식으로 다른 저장소의 하위 항목 혹은 전체를 현재 저장소에 병합하는 기법

  • NICKNAME

    • origin : 하위 원격 저장소
    • upstream : 하위 원격 저장소 내역을 포함할 원격 저장소
      • subtree : upstream 에서 하위 저장소 내역을 저장하는 폴더

Initial Config


01

1
2
3
4
git clone <UPSTREAM-URL>
cd <UPSTREAM-PATH>
git remote add upstream <UPSTREAM-URL>
git remote add origin <ORIGIN-URL>

Create


02

1
git subtree add --prefix=<SUBTREE-PATH> <ORIGIN> <ORIGIN-BRANCH>
  • subtree add : 하위 저장소 <ORIGIN> 의 브랜치 <ORIGIN-BRANCH> 의 내역을 저장할 상위 저장소의 폴더 <SUBTREE-PATH> 를 생성함

Pull : Update Changes in Origin to Upstream


03

1
git subtree pull --prefix=<SUBTREE-PATH> <ORIGIN> <ORIGIN-BRANCH>
  • subtree pull : 상위 저장소의 폴더 <SUBTREE-PATH> 에 하위 저장소 <ORIGIN> 의 브랜치 <ORIGIN-BRANCH> 의 변경 사항을 병합(pull)함

Push : Update Changes in Upstream to Origin


04

1
git subtree push --prefix=<SUBTREE-PATH> <ORIGIN> <ORIGIN-BRANCH>
  • subtree push : 상위 저장소의 폴더 <SUBTREE-PATH> 에서 직접 갱신한 내역을 하위 저장소 <ORIGIN> 의 브랜치 <ORIGIN-BRANCH> 에 추가함

Split


05

1
git subtree split --prefix=<SUBTREE-PATH> -b <NEW-BRANCH>
  • subtree split : 하위 저장소와 연동되어 있는 폴더 <SUBTREE-PATH> 에 관한 커밋을 추출하여 새로운 브랜치를 생성함

Reference

This post is licensed under CC BY 4.0 by the author.