client/
폴더가 GitHub에 비어 있음git status
시 client (modified content)
또는 fatal: in unpopulated submodule 'client'
발생git push
해도 client
내부 파일이 올라가지 않음원인 | 설명 |
---|---|
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 리포지토리를 중첩하여 관리하는 기능입니다.
복잡한 구조가 필요한 대규모 프로젝트에는 유용하지만, 단순한 모노레포 구조에는 권장되지 않습니다.