깃 · 서브모듈
[깃] 서브모듈
2021. 12. 21.
서브모듈
- 서브모듈은 디렉토리로 취급하여 관리한다.
- 디렉토리를 통째로 커밋으로 취급한다.
- 디렉토리 아래의 파일 수정사항을 직접 추적하지는 않는다.
- 서브모듈 프로젝트의 브랜치의 커밋 정보를 가지고 서브모듈 프로젝트에 대한 체크아웃을 수행한다.
- 브랜치 별로 서브모듈 커밋을 다르게 가리킬 수 있다. 이 경우 브랜치 체크아웃 시 서브모듈의 커밋을 변경할 수 있다.
- 서브모듈과 서브모듈 사용 프로젝트 master 브랜치 병합 순서
- 서브모듈 Pull Request로 feature 브랜치 master 브랜치에 병합
- 서브모듈 사용 프로젝트 Pull Request로 feature 브랜치 master 브랜치에 병합
- 서브모듈 사용 프로젝트에서 서브모듈 커밋을 1번의 병합 커밋으로 업데이트
- 배포 대상 커밋 = 서브모듈 사용 프로젝트의 서브모듈 업데이트 커밋
서브모듈 사용 시 주의점
- 서로 다른 브랜치의 서브모듈 커밋 ID가 다를 경우 브랜치 병합 시 해당 서브모듈에 대한 병합 충돌이 발생할 수 있으며 이를 해결해야 한다.
- 예: master 브랜치의 서브모듈 커밋과 dev 브랜치의 서브모듈 커밋이 다른 경우 master 브랜치에서 분기한 feature 브랜치를 dev 브랜치로 병합 시 서브모듈 병합 충돌이 발생하게 된다. feature 브랜치의 서브모듈 커밋은 master 브랜치의 것을 따른다. dev 브랜치의 서브모듈 커밋으로 병합 시 충돌을 해결하여 서브모듈 자체 변경 사항만 커밋에 반영하면 된다.
- 서브모듈 사용 프로젝트에서는 브랜치 병합 충돌 해결 시 최종 서브모듈 커밋을 반드시 확인한다.