728x90
1. 현상
git을 이용해 레포지토리 관리를 하던 중, 특정 서브 디렉토리의 수정사항을 git에서 트래킹 할 수 없는 현상이 발생했다.
해당 디렉토리를 git에 push하더라도, git에서 해당 디렉토리가 올라가지 않는다.
2. 원인
해당 디렉토리를 submodule(하위 Repository)로 인식하기 때문이다.
실수로 루트 디렉토리가 아닌 하위 디렉토리에서 git add를 하니 이와 같은 문제가 발생했다.
(다른 Repository에 소속된 디렉토리를 해당 Repository로 복사해온 경우도 이와 같은 문제가 발생한다.)
3. 해결방안
3.1 submodule 삭제하기
find명령어로 하위 디렉토리 내부의 ".git" 폴더를 검색한다.
$find . -name ".git"
3.2 하위 디렉토리 git 폴더 삭제
아래와 같은 명령어로 해당되는 모든 하위 디렉토리 내의 ".git" 폴더를 지워준다.
$ cd <하위 디렉토리>
$ rm -rf ".git"
3.3 루트 디렉토리에서 해당 하위 디렉토리의 git cache 제거
$ cd <루트 디렉토리>
$ git rm -rf --cached <하위 디렉토리>
위와 같은 명령어로 git cache를 지워주고,
다시 해당 디렉토리를 add시켜준다.
3.4 commit & push
해당하는 디렉터리의 파일들이 정상 커밋, 푸쉬되어 원격 repository에 정상적으로 올라감을 확인할 수 있다.
반응형
'Git' 카테고리의 다른 글
[Git] 모든 개발자가 알아야 할 18가지 Git 명령어 (3) | 2024.11.13 |
---|---|
[Git] git stash 란? (0) | 2022.12.17 |
Git 이전 커밋으로 롤백하기(git revert) (2) | 2022.12.14 |
Github SSH인증 (0) | 2022.10.17 |
[Git] 특정 커밋의 상태 clone하기 (0) | 2022.09.22 |