728x90
1. submodule
- Git 저장소안에 다른 저장소가 들어가 있는 개념
- 상위 저장소에서 서브모듈을 SHA값, 하나의 바이너리처럼 취급하기 때문에 병합 복잡
- 병합 되는 것이 아닌 최신 커밋의 내용으로 교체됨 (직접 서브모듈을 업데이트한 뒤 병합후 푸쉬해야 함)
git submodule add https://github.com/Guts-Gun/KITe_sendManager.git
# git submodule add <URL to Git repo>
2. subtree
- 여러 저장소를 통합하는 개념
- 서브모듈과는 달리 상위 저장소에 파일을 직접 추가하고 트래킹 (서브트리의 파일 및 변경사항도 상위 저장소에 기록)
- 서브트의 원격에 있는 소스와 서브트리를 추가한 저장소가 달라도 subtree merge를 활용 양쪽의 변경사항 모두 반영 가능
#git subtree add --prefix=folder/ remote-name <URL to Git repo> subtree-branchname
git subtree add --prefix=survey_platform_backend_auth https://github.com/solbiko/survey_platform_backend_auth main
3. 정리
Submoule | Subtree | |
공통점 | 개별 프로젝트인 여러 개의 프로젝트를 개발자의 로컬에서는 하나의 repo로 관리할 수 있게 해줌 | |
차이점 |
링크 | 복사 |
CBD(component-based development) | SBD(system-based development) | |
저장소를 여러개의 작은 저장소로 나눌때 사용 | 다른 저장소를 하나의 저장소로 이력과 함께 통합할 수 있음 | |
메인 프로젝트는 다른 컴포넌트들에 의존적 | 모든 저장소는 모든것을 포함하고 있으며 각 부분을 수정 가능 | |
서브 모듈 안에서 커밋/푸쉬를 한 후에 메인 저장소에서 한번 더 커밋/푸쉬를 해야 함 |
저장소의 크기는 커지지만 코드와 이력을 재 사용하기에 좋음 (히스토리 관리 용이) |
728x90