[Git] Git Submodule

2024. 11. 9. 17:41·Git

최근 회사에서 진행하였던 프로젝트 코드들을 보며 공부하기 위해 GitHub에서 프로젝트들을 Clone하여 실행 중에 에러가 발생하여 당황하였다. Clone 후 자바 버젼 확인 후 바로 실행 시켰는데 무슨 문제가 있는거지? 라고 생각을 하던 와중 프로젝트에 패키지가 누락되어 있었다. Github에는 'BE-App-Module @ 0fe3cdc'라는 패키지 폴더가 존재하는 반면, 클론한 프로젝트에는 이 서브모듈이 포함되어 있지 않아서 생긴 문제였다.😭

처음에는 브랜치가 다른것도 아니고 왜 전부 Clone이 안되었을까... 생각하며 구글링을 하니 Git Submodule 이라는 단어를 알게 되어서 찾아볼려고 한다. 

1. Git Submodule이란?

Git Submodule은 하나의 Git 저장소 안에 다른 Git 저장소를 포함할 수 있게 해주는 기능입니다. 이를 통해 대규모 프로젝트에서 여러 팀이 동시에 작업할 수 있는 환경을 조성할 수 있습니다. 예를 들어, 공통 라이브러리나 외부 API를 사용하는 경우, 이를 서브모듈로 관리하면 각 프로젝트에서 독립적으로 업데이트하고 사용할 수 있습니다.

2. 장점

  • 코드 재사용성 : 여러 프로젝트에서 동일한 코드를 재사용할 수 있어 중복 작업을 줄일 수 있습니다.
  • 독립적인 버전 관리 : 서브모듈은 독립적으로 버전 관리가 가능하여, 각 프로젝트의 요구에 맞게 업데이트할 수 있습니다.
  • 팀 협업 용이 : 여러 팀이 동시에 작업할 수 있는 환경을 제공하여, 프로젝트의 효율성을 높입니다.

3. 추가하는 방법

서브모듈을 추가하는 방법은 매우 간단합니다. 아래의 단계를 따라 해보세요.

  1. 서브모듈 추가 : 먼저, 메인 저장소에서 서브모듈을 추가합니다. 아래의 명령어를 사용합니다.
    예를 들어, git submodule add https://github.com/example/repo.git submodule-directory와 같이 입력합니다.
    git submodule add <repository-url> <path>
  2. .gitmodules 파일 확인 : 서브모듈을 추가하면 .gitmodules 파일이 생성됩니다. 이 파일에는 서브모듈의 경로와 URL이 포함되어 있습니다.
  3. 서브모듈 초기화 : 서브모듈을 추가한 후, 다음 명령어로 초기화합니다.
    git submodule init
  4. 서브모듈 업데이트 : 서브모듈을 업데이트하려면 아래의 명령어를 사용합니다.
    git submodule update

 

4. 관리하는 방법

서브모듈을 관리하는 것은 매우 중요합니다. 다음은 서브모듈을 관리하는 방법입니다.

  • 서브모듈 업데이트 : 서브모듈의 최신 버전을 가져오려면 git submodule update --remote 명령어를 사용합니다.
  • 서브모듈 삭제 : 서브모듈을 삭제하려면, 먼저 .gitmodules 파일에서 해당 서브모듈을 제거한 후, 아래의 명령어를 사용합니다.
  • git rm --cached <submodule-path>

5. 실전 예제

실제 프로젝트에서 Git Submodule을 사용하는 예제를 살펴보겠습니다. 예를 들어, 웹 애플리케이션을 개발할 때, 공통으로 사용하는 UI 라이브러리를 서브모듈로 추가할 수 있습니다. 이를 통해 UI 라이브러리의 업데이트가 필요할 때, 메인 프로젝트에 영향을 주지 않고 독립적으로 관리할 수 있습니다.

[출처] https://diveindeep.dev/blog/git-submodule/

 

반응형

'Git' 카테고리의 다른 글

[Git] 깃(git) 커밋(commit), 푸시(push)  (1) 2024.01.03
'Git' 카테고리의 다른 글
  • [Git] 깃(git) 커밋(commit), 푸시(push)
JJuuuunn
JJuuuunn
  • JJuuuunn
    JJuuuunn
    JJuuuunn
  • 전체
    오늘
    어제
    • 분류 전체보기 (70)
      • Backend (7)
        • Java (7)
      • Frondend (48)
        • Vue.js (12)
        • JavaScript (21)
        • Css (1)
      • Infra (0)
      • Git (2)
      • CS (5)
        • DataBase (0)
        • Network (2)
        • OS (0)
        • Algorithm (0)
      • 리뷰 (5)
        • 강의 (1)
        • Books (4)
      • ETC (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    javascript
    HTML
    axios
    KDT
    혼자 공부하는 컴퓨터구조+운영체제
    VUE
    깊은 감시
    Network
    API
    렌더링
    frontend
    혼공컴운
    이벤트
    Watch
    Vue.js
    자바
    Java
    자바스크립트
    신세계i&c
    객체
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.1
JJuuuunn
[Git] Git Submodule
상단으로

티스토리툴바