nugawiki

./dev-ops

Git 서브모듈, 서브트리

2분 소요 /DEV-OPS #GIT/SVN

서브모듈 설정

1. 원격 레포지토리를 서브모듈로 추가

git submodule add https://github.com/nugaBox/search.git pg/search

2. 상위 레포지토리에 변경사항 커밋

git add .gitmodules pg/search
git commit -m "Add search as a submodule"

3. 서브모듈 추가 후 초기화 및 업데이트

git submodule update --init --recursive

4. 서브모듈 변경사항 반영

pg/search 폴더에서 작업한 후, 서브모듈 변경사항을 커밋하고 푸시합니다.

cd pg/search
git add .
git commit -m "Update search functionality"
git push origin main

상위 레포지토리로 돌아와 서브모듈 업데이트 상태를 반영합니다.

cd ../../
git add pg/search
git commit -m "Update search submodule"
git push origin main

서브트리 설정

1. 원격 레포지토리를 서브트리로 추가

git subtree add --prefix=pg/search https://github.com/nugaBox/search.git main --squash

2. 서브트리 레포지토리 commit & push

해당 레포지토리 위치에서 변경사항 이력을 저장하고 반영함.

git add .
git commit -m "변경사항 이력"
git push origin main

3. 상위 레포지토리 업데이트 (필요 시)

서브트리 레포지토리에 변경 사항이 생기면 상위 레포지토리에서도 업데이트해야 함.

git subtree pull --prefix=pg/search <search_레포지토리_URL> main --squash

* 커밋할 파일이 있는 경우

커밋되지 않은 작업이 중요한 경우 별도의 브랜치에 임시 커밋을 한 후 서브트리를 추가하고 다시 병합할 수도 있음

git checkout -b temp-save
git add .
git commit -m "Temporary save"
git checkout main
git subtree add --prefix=pg/search <search_레포지토리_URL> main --squash
git merge temp-save

서브트리 삭제 후 서브모듈 설정

단계명령어
서브트리 삭제git rm -r pg/search
서브모듈 추가git submodule add <search_레포지토리_URL> pg/search
서브모듈 초기화 및 업데이트git submodule update --init --recursive