[깃] 서브모듈

서브모듈

  • 서브모듈은 디렉토리로 취급하여 관리한다.
  • 디렉토리를 통째로 커밋으로 취급한다.
  • 디렉토리 아래의 파일 수정사항을 직접 추적하지는 않는다.
  • 서브모듈 프로젝트의 브랜치의 커밋 정보를 가지고 서브모듈 프로젝트에 대한 체크아웃을 수행한다.
  • 브랜치 별로 서브모듈 커밋을 다르게 가리킬 수 있다. 이 경우 브랜치 체크아웃 시 서브모듈의 커밋을 변경할 수 있다.
  • 서브모듈과 서브모듈 사용 프로젝트 master 브랜치 병합 순서
    1. 서브모듈 Pull Request로 feature 브랜치 master 브랜치에 병합
    2. 서브모듈 사용 프로젝트 Pull Request로 feature 브랜치 master 브랜치에 병합
    3. 서브모듈 사용 프로젝트에서 서브모듈 커밋을 1번의 병합 커밋으로 업데이트
      • 배포 대상 커밋 = 서브모듈 사용 프로젝트의 서브모듈 업데이트 커밋

서브모듈 사용 시 주의점

  • 서로 다른 브랜치의 서브모듈 커밋 ID가 다를 경우 브랜치 병합 시 해당 서브모듈에 대한 병합 충돌이 발생할 수 있으며 이를 해결해야 한다.
    • 예: master 브랜치의 서브모듈 커밋과 dev 브랜치의 서브모듈 커밋이 다른 경우 master 브랜치에서 분기한 feature 브랜치를 dev 브랜치로 병합 시 서브모듈 병합 충돌이 발생하게 된다. feature 브랜치의 서브모듈 커밋은 master 브랜치의 것을 따른다. dev 브랜치의 서브모듈 커밋으로 병합 시 충돌을 해결하여 서브모듈 자체 변경 사항만 커밋에 반영하면 된다.
  • 서브모듈 사용 프로젝트에서는 브랜치 병합 충돌 해결 시 최종 서브모듈 커밋을 반드시 확인한다.

Comments