Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views :

[Git] Subtree

/
/
/
105 Views

Subtree 란

Subtree는 하나의 저장소가 여러 자식 저장소를 통합해서 구성한다. 부모 저장소에서 자식 저장소를 추가하여 하나의 저장소 처럼 관리할 수 있도록 도와주는 기능이다.

자식 저장소의 파일을 복사하여 하나의 저장소로 구성할 수 있으며, 자식 저장소에 별도로 Push, Pull 할 수 있다.

Submodule 은 하나의 프로젝트를 여려개의 프로젝트로 나누는 것이고, Subtree 는 여러 프로젝트를 하나로 합치는 것이라고 볼 수 있다.

Subtree 구성하기

1. 자식 Repository 추가

$ git remote add {child_remote_name} {child_remote_path}

$git remote add Test_Child https://github.com/xxx/Test_Child.git
  • child_remote_name: 추가할 자식 리모트 이름
  • child_remote_path: 자식 저장소 주소

Subtree 에서 push, pull 등의 git 작업을 할때 참조할 저장소를 추가해야 한다.

$ git remote -v
Test_Child https://github.com/xxx/Test_Child.git (fetch)
Test_Child https://github.com/xxx/Test_Child.git (push)
origin https://github.com/xxx/xxx.git (fetch)
origin https://github.com/xxx/xxx.git (push)

git remote -v 명령어로 참조할 저장소가 제대로 추가 되었는지 확인할 수 있다.

2. Subtree 추가

$ git subtree add –prefix={child_path} {child_remote_name} {child_branch} –squash

$ git subtree add –prefix=subtree/Test_Child Test_Child master –squash
  • child_path: 어느 폴더에 저장할 것인지 선택, 이미 해당 폴더가 존재할 경우 삭제 후 진행하도록 한다.
  • child_remote_name: 자식 저장소 추가할때 사용한 이름
  • child_branch: 자식 리모트에서 어느 브랜치를 추가할 것인지 선택

3. Child Remote 관리

$ git subtree push –prefix={child_path} {child_remote_name} {child_branch}

$ git subtree push –prefix=subtree/Test_Child Test_Child master
$ git subtree pull –prefix={child_path} {child_remote_name} {child_branch}

$ git subtree pull –prefix=subtree/Test_Child Test_Child master
  • child_path: 어느 폴더에 저장할 것인지 선택, 이미 해당 폴더가 존재할 경우 삭제 후 진행하도록 한다.
  • child_remote_name: 자식 저장소 추가 할때 사용한 이름
  • child_branch: 자식 리모트에서 어느 브랜치를 추가할 것인지 선택

서브트리로 구성한 자식 저장소와 자식 리모트의 원격 저장소는 별개로 관리 되어 진다. 자식 원격 리모트 저장소와 데이터 싱크를 맞추려면 위의 명령어를 사용해야 한다.

Leave a Comment

이메일은 공개되지 않습니다.

This div height required for enabling the sticky sidebar