[Git Error] fatal: in unpopulated submodule ... 해결하기

JY·2022년 4월 22일
1

Git, GitHub

목록 보기
2/3
post-thumbnail

❓ 에러 발생 원인


깃으로 TIL을 쓰기 시작한지 4일차.. 또다시 문제가 발생했다..

이런 바보 같은 실수를 변명을 하자면 제정신 아닌 상태로 작성하고 업로드 하느라..

1. 푸시할 파일이 있는 디렉토리(20220423)에서 아무 생각 없이 저장소를 생성하는 git init을 입력했다.

2. 입력한 순간, 이 디렉토리를 Git 로컬 저장소로 설정하면서 브랜치가 main에서 master로 전환됐다. (이때 숨김파일 형식의 .git 디렉토리가 만들어진다.)

3. 그러니 당연하게도 푸시가 되지 않았다. (error: src refspec main does not match any)

4. 푸시가 안 되니 상위 디렉토리로 이동해서 막무가내로 디렉토리째로 푸시해버렸다. 깃이 뭔가를 열심히 하고 평소랑 같은 메시지가 나와서 성공한 줄 알았다..ㅎ

5. 그래서 깃허브 웹사이트에 가서 보니 웬 화살표가 있는 디렉토리가 생성되어 있었다. 얘는 클릭도 안된다..🙄


💡 해결법


☝️ 첫 번째 해결법 - .git 파일 삭제

로컬 저장소로 설정된 디렉토리를 취소(git init 취소)해야 한다. .git은 숨김폴더이므로 ls -a를 통해 확인할 수 있다.

나의 경우에는 다음 명령어로도 지워지지 않아서 -r 대신 -rf를 붙이니 지워지고 브랜치가 master에서 main으로 바뀌었다.

$ rm -r .git

그리고 다시 해보면 여전히 안된다!🙃🔫

$ git add README.md
fatal: in unpopulated submodule '2022/202204/20220422'

✌️ 두 번째 해결법 - cache 삭제

그래도 이번엔 에러 메시지가 나와서 찾아보니 외부에 .git이 있는데 내부에 또 .git이 있으면 서브모듈(submodule)로 인식하고 커밋이 추가가 안된다고 한다.

.git 오류를 일으키는 하위 파일들을 모두 삭제하기 위해 해당 디렉토리에서 다음 명령어를 입력한다.

$ git rm --cached . -rf

그리고 다시 푸시하면 정상적으로 잘 업로드가 된 걸 볼 수 있다!

profile
🙋‍♀️

0개의 댓글