티스토리 뷰

728x90

Git에서 Subtree와 Submodule을 동시에 사용하는 하이브리드 운영 방법은 주로 다음과 같은 상황에서 효과적입니다.

  • Submodule: 독립적이며 자주 업데이트되는 외부 의존성 관리 (예: 공통 라이브러리, 프레임워크 등)
  • Subtree: 덜 빈번하게 업데이트되거나 주 레포의 일부처럼 취급하고 싶은 프로젝트의 하위 요소 (예: 내부 모듈, 특정한 기능 세트 등)

이를 혼합한 하이브리드 운영 방법의 효과적인 전략은 다음과 같습니다.


📌 Submodule과 Subtree의 특징 및 활용 목적 비교

구분  Submodule  Subtree
형태 독립된 별도의 레포지토리로 관리 주 레포지토리의 하위 폴더로 통합 관리
커밋 기록 별도 관리 (하위 모듈 내에서 별도 기록) 주 레포지토리에 통합된 형태로 단일 기록
업데이트 주기적으로 자주 업데이트 (수시로 Pull) 상대적으로 드물게 업데이트 (주기적 Merge)
의존성 느슨한 연결, 분리된 라이브러리 등에 적합 밀접하게 연관된 내부 컴포넌트에 적합
복잡성 복잡한 관리, 초보자에게 어려울 수 있음 상대적으로 간단한 관리, 사용하기 쉬움

✅ 하이브리드 운영 방식 시나리오 및 구성 예시

예를 들어, 아래와 같은 구조로 하이브리드를 구성할 수 있습니다.

Main-Repo/
├── common-lib/          [Submodule] (자주 업데이트되는 라이브러리)
├── frontend/
│   ├── web-ui/          [Subtree] (가끔씩 통합, 별도의 Front-end 레포 존재)
│   └── mobile-app/      [Subtree] (별도 관리되는 앱 모듈)
└── backend/
    └── auth-service/    [Subtree] (내부 서비스, 낮은 빈도의 동기화)
  • common-lib 는 Submodule로 등록하여 자주 업데이트하는 외부 공유 라이브러리를 독립적으로 관리합니다.
  • frontend/web-ui 및 backend/auth-service 등 내부 서비스와 같이 상대적으로 드물게 업데이트되고 메인 레포지토리의 일부로 관리하는 것이 더 자연스러운 모듈들은 Subtree로 관리합니다.

🚀 하이브리드 구성 실습 예시

1️⃣ Submodule 추가 및 관리법

# Submodule 추가
git submodule add https://gitlab.com/your-org/common-lib.git common-lib

# Submodule 업데이트
git submodule update --remote --merge

Submodule은 별도 관리이며, 최신 커밋 참조만 메인 레포에서 유지합니다.

2️⃣ Subtree 추가 및 관리법

# Subtree 추가 (frontend 웹 UI 추가 예)
git subtree add --prefix=frontend/web-ui https://gitlab.com/your-org/web-ui.git main --squash

# Subtree 최신 변경 사항 가져오기
git subtree pull --prefix=frontend/web-ui https://gitlab.com/your-org/web-ui.git main --squash

# Subtree로 변경사항 푸시하기 (양방향 관리 시)
git subtree push --prefix=frontend/web-ui https://gitlab.com/your-org/web-ui.git main

Subtree는 주 레포지토리의 히스토리에 통합되어 있으며, 필요 시 통합 또는 동기화만 수행합니다.


🎯 하이브리드 운영 시 권장 전략

  • Submodule 활용 전략
    • 자주 변경되는 공통 라이브러리
    • 별도의 개발팀이 독립적으로 관리하는 모듈
    • CI/CD 단계에서 별도의 빌드 프로세스와 독립적으로 관리
  • Subtree 활용 전략
    • 통합된 코드베이스처럼 취급하는 서비스 또는 프로젝트
    • 히스토리를 간단하게 유지하고자 하는 모듈
    • Pull 빈도가 낮은 모듈로, 메인 레포의 일부처럼 취급되는 컴포넌트

⚠️ 주의할 점과 Best Practice

  • Submodule과 Subtree를 함께 쓰면 레포지토리 구조가 복잡해질 수 있으므로, 팀 구성원에게 명확한 가이드라인 제공이 필수입니다.
  • Submodule과 Subtree 사용을 위한 GitLab/Jenkins 등의 CI/CD 설정도 따로 명확하게 구분하여 관리해야 합니다.
  • 문서화 및 커밋 규칙을 명확히 하여 다른 팀원들이 혼란 없이 사용하도록 합니다.

위의 가이드를 따라 구성하면 Subtree와 Submodule의 장점을 모두 살리면서 Git 운영 방식을 효율적으로 개선할 수 있습니다.

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함