./dev-ops
Git 서브모듈, 서브트리
서브모듈 설정
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 |