Git Submodule 이해하기

민주니어·2024년 10월 20일
post-thumbnail

나는 git에 대해 기본적인 지식만 가지고 있었다. commit, push, pull 정도만 알고 있었지만, 실제 프로젝트에서는 그 이상의 것이 필요했다. 특히 git submodule이라는 개념을 처음 접했을 때는 꽤나 당황스러웠다. 이 글에서는 내가 git submodule을 이해하고 사용하게 된 과정을 공유하고자 한다.

Git Submodule이란?

Git submodule은 한 git 저장소 안에 다른 git 저장소를 포함시키는 기능이다. 처음에는 이 개념이 왜 필요한지 이해하지 못했다.
하지만 회사에서 모노레포 구조를 사용하면서 그 유용성을 깨닫게 되었다.

왜 Git Submodule을 사용하는가?

우리 회사는 여러 프로젝트에서 공통으로 사용되는 컴포넌트나 유틸리티 함수들을 별도의 저장소로 관리했다. 이 공통 코드를 각 프로젝트에 쉽게 통합하고 업데이트하기 위해 Git submodule을 사용했다.

Git Submodule 사용하기

1. 프로젝트 클론하기

새 프로젝트를 시작할 때마다 항상 다음 명령어를 실행해야 했다:

git clone <프로젝트_URL>
cd <프로젝트_디렉토리>
git submodule update --init

처음에는 이 과정이 번거롭게 느껴졌지만, 곧 이것이 팀의 workflow의 중요한 부분임을 알게 되었다.

2. Submodule 업데이트하기

공통 코드가 업데이트되면, 다음 명령어로 submodule을 최신 상태로 유지했다:

git submodule update --remote

Git Submodule의 장단점

장점:

  1. 코드 재사용성 증가
  2. 버전 관리의 용이성
  3. 프로젝트 간 일관성 유지

단점:

  1. 학습 곡선이 높음
  2. 실수로 인한 버전 불일치 가능성
  3. 복잡한 workflow

결론

Git submodule은 처음에는 이해하기 어려웠지만, 지금은 프로젝트 관리에 없어서는 안 될 도구가 되었다. 이렇게 말할 수 있는 이유는 다음과 같다:

  1. 모듈화와 재사용성:
    Git submodule을 사용하면 공통 코드를 별도의 저장소로 분리할 수 있다. 이는 코드의 모듈화를 촉진하고, 여러 프로젝트에서 동일한 코드를 쉽게 재사용할 수 있게 해준다.

  2. 버전 관리의 정확성:
    각 submodule은 특정 커밋을 가리키고 있어, 프로젝트의 어떤 버전에서 어떤 버전의 submodule을 사용했는지 정확히 추적할 수 있다. 이는 버그 수정이나 롤백 시 매우 유용하다.

  3. 독립적인 개발 흐름:
    메인 프로젝트와 submodule은 각각 독립적인 Git 저장소이므로, 별도의 개발 주기를 가질 수 있다. 이는 팀 간의 작업을 더욱 효율적으로 만들 수 있다. .

  4. 대규모 프로젝트 관리:
    모노레포 구조에서 submodule을 사용함으로써, 전체 프로젝트의 크기를 효과적으로 관리할 수 있다. 필요한 submodule만 클론하여 작업할 수 있어, 개발 환경 설정 시간과 저장 공간을 절약할 수 있었다.

이러한 이유들로 인해 git submodule은 학습 곡선이 있고 때로는 복잡성을 증가시키기도 하지만, 제공하는 이점이 그 단점을 크게 상회한다는 것을 경험을 통해 깨달았다.

profile
drop the bit

0개의 댓글