📌 현상

❗ 원인

원인 설명
client/ 폴더 안에서 git init 을 한 경우 client/.git이 생기며, Git은 이를 독립된 리포지토리(= 서브모듈)로 인식
또는 git add client 를 서브모듈처럼 추가한 경우 .gitmodules 파일이 자동 생성되고 서브모듈로 등록됨

결과적으로 Git은 client하위 레포지토리로 간주하고, 내부 파일을 추적하지 않게 됩니다.


🛠 해결 방법 정리

✅ 잘못된 서브모듈 정리하기

# 1. .gitmodules 파일 제거
rm .gitmodules

# 2. Git 인덱스에서 client 제거 (로컬 폴더는 남음)
git rm --cached client

# 3. client 내부에 남은 .git 폴더 제거
rm -rf client/.git

# 4. client를 일반 폴더로 다시 Git에 추가
git add client
git commit -m "fix: remove submodule and re-add client folder"
git push -u origin main --force


💡 앞으로의 예방 방법

실수 예방법 설명
client 안에서 git init 하지 말기 하나의 모노레포로 관리할 경우에는 상위 루트에서만 Git을 관리
✅ GitHub에서 클론할 때 --recurse-submodules 등 사용하지 않기 서브모듈로 설정되면 관리가 복잡해짐
.gitmodules, client/.git 등 불필요한 Git 설정이 없는지 확인

📘 참고 개념: 서브모듈이란?

서브모듈(submodule)은 Git 리포지토리 안에 다른 Git 리포지토리를 중첩하여 관리하는 기능입니다.

복잡한 구조가 필요한 대규모 프로젝트에는 유용하지만, 단순한 모노레포 구조에는 권장되지 않습니다.


✅ 결론