Git, CocoaPods, Xcode, Shell

[iOS - swift] github submodule (서브 모듈), SourceTree 사용 (git submodule update)

jake-kim 2022. 3. 24. 22:55

Submodule

  • 하나의 repository 안에 또 다른 별개의 repository
  • 서브모듈 repository는 독립적으로 커밋을 관리

Repo 준비

(대체적으로 source tree 이용)

  • 예제로 사용할 Repo 추가
    • 우측 SomeRepo: 이곳에 서브모듈을 추가
    • 좌측 MyModule: SomeRepo의 Submodule로 사용

SomeRepo에 MyModule을 서브 모듈로 추가

  • source tree로 하는 경우
    • SourceTree에서 SUBMODULES 오른쪽 마우스 클릭 -> Add Submodules 선택

  • MyModule URL을 입력

  • Local Relative Path에는 Submodule이 위치할 폴더가 필요하여, 아래처럼 생성

  • 좌측 SUBMODULES에 SubmoduleFolder가 생긴것을 확인
    • Staged file에 .gitmodules, SubmoduleFolder 확인

  • 중요하게 볼 사항은, SubmoduleFolder의 커밋로그를 보면, 3f0dbcb74...라고 되어있는것을 확인
    • 해당 커밋로그는 MyModule의 최신 커밋

MyModule의 최신 커밋) 3f0dbcb (위와 일치)

submodule 업데이트 방법

  • 테스트를 위해 서브모듈에 변경사항 입력 후 push
    • 커밋 메시지: Update string

  • SomeRepo의 Submodule을 보면 업데이트 된 아이콘 확인

  • 위에서 SubmoduleFolder을 더블클릭

  • 원격 저장소에는 갱신되어 있으므로 Pull하여 최신 커밋 정보 받아오기
    • shift + cmd + L

  • Pull하면 자동으로 SomeRepo에도 서브 모듈의 최신 커밋정보를 확인 가능

  • Stage 후 커밋하면 반영 완료