728x90
반응형
한 줄 요약
레포 안에 다른 레포를 링크로 연결하는 것
왜 필요해?
나의 상황:
CodingTestStudy레포 = 메인 프로젝트 (백준허브)leetCode레포 = LeetHub가 자동으로 푸시하는 곳
이 둘을 연결하고 싶은데, 그냥 복사하면?
- LeetHub가 푸시할 때마다 수동으로 복사해야 함
- 두 곳에 같은 파일이 중복됨
Submodule을 쓰면?
leetCode폴더가 실제 파일이 아니라 "링크"가 됨- LeetHub가 leetCode 레포에 푸시하면, 링크만 업데이트하면 끝
비유로 이해하기
일반 폴더: 책을 복사해서 내 방에 둠 (원본 바뀌면 다시 복사해야 함)
Submodule: 도서관 책에 북마크 꽂아둠 (원본 바뀌어도 북마크만 업데이트)자주 쓰는 명령어
처음 submodule 추가할 때
git submodule add <레포URL> <폴더명>
git commit -m "Add submodule"
다른 PC에서 clone할 때
# 방법 1: clone할 때 같이 가져오기
git clone --recursive <레포URL>
# 방법 2: clone 후에 가져오기
git clone <레포URL>
git submodule init
git submodule update
submodule 최신 버전으로 업데이트
git submodule update --remote
git add <폴더명>
git commit -m "Update submodule"
주의할 점
clone할 때
--recursive잊지 말기- 안 하면 submodule 폴더가 비어있음
submodule 안에서 작업하지 말기
- submodule은 읽기 전용처럼 생각하기
- 수정은 원본 레포에서!
submodule 업데이트 후 커밋 필요
git submodule update --remote후에- 메인 레포에서도 커밋해야 반영됨
내 프로젝트 구조
CodingTestStudy/ <- 메인 레포
├── leetCode/ <- submodule (링크)
│ └── (LeetHub가 관리)
├── 백준/
└── example/.gitmodules 파일에 submodule 정보가 저장됨:
[submodule "leetCode"]
path = leetCode
url = https://github.com/CheHyeonYeong/leetCode.git728x90
반응형
'개발 이모저모 > TIL' 카테고리의 다른 글
| 💻 TIL - 실무 SQL에서 쿼리 결과가 안 나왔던 이유.txt (2) | 2025.04.30 |
|---|---|
| 💻 TIL - Oracle에서 프로시저 삭제가 안될 때 해결 방법 (0) | 2025.04.16 |
| intelliJ 에서 jira branch 를 쉽게 연동할 수 있도록 하는 방법 (0) | 2025.03.09 |
| Todo Controller 카테고리 별로 분류하기 (0) | 2024.08.16 |
| 20240614 TIL digital envelope routines::unsupported 해 (0) | 2024.06.14 |