2013-05-15 2 views
52

하위 모듈을 포함하는 프로젝트가 경로 mysubmodule에 있습니다. 소스 (1.8.3-rc2)에서 최신 Git을 설치하고 git submodule deinit mysubmodule을 실행했습니다. 그런 다음 .gitmodules 파일을 삭제하고 변경 사항을 적용했습니다. mysubmodule 폴더에서 .git 디렉토리도 삭제했습니다.이전 서브 시스템의 경로에 Git 파일을 어떻게 추가합니까?

mysubmodule에서 내 저장소에 파일을 직접 커밋하고 싶습니다.하지만 git에는 변경 사항이 없습니다. 입력하면 git add mysubmodule 아무 것도하지 않습니다. 내가 git add mysubmodule/file.txt를 입력하면 당신은 REPO의 새로운 버전을 확인하면 나는 또한 발견 한 fatal: Path 'mysubmodule/file.txt' is in submodule 'mysubmodule'

, 그것은 더 .gitmodules 파일이없는에도 불구하고 mysubmodule 디렉토리를 생성 말한다. 그리고 git submodule init을 실행하면 No submodule mapping found in .gitmodules for path 'mysubmodule' 오류가 발생합니다.

어떻게 수정합니까?

+1

[이 단계들] (http://stackoverflow.com/a/1260982/955926)을 모두 점검해 보니 서브 모듈의 부분이 남아 있지 않은지 확인 했습니까? 나는'deinit'이 서브 모듈을 완전히 제거하지 않는다고 생각한다. 하위 모듈로 repo를 복제했으나'git init'을 아직 실행하지 않은 것처럼'.git/config' 파일에서이를 제거하는 것처럼 보입니다. 하위 모듈을 완전히 제거하는 것과는 다릅니다. 이 경우 git은 폴더가 하위 모듈이라고 생각하지만 무시합니다. –

답변

71

그래도 mysubmodule은 특수 모드 "160000"으로 색인에 기록되어 있기 때문에 서브 모듈이라고 생각합니다.
자세한 내용은 "git submodule update needed only initially?"을 참조하십시오. .gitmodule 파일의 존재에 의존하지 않는

$ git ls-tree HEAD mysubmodule 
160000 commit c0f065504bb0e8cfa2b107e975bb9dc5a34b0398 mysubmodule 

, 또는 mysubmodule의 내용에 :
in this answer 같이, 당신이 작업을 수행 할 수 있는지 확인합니다.

git rm --cached mysubmodule 

그런 다음 계속 진행할 수 있습니다

은 먼저 인덱스에서 해당 항목을 제거해야합니다.

+0

'git ls-tree HEAD mysubmodule'은 결과를 알려주지 않았지만'git ls-files --stage | grep mysubmodule'이 효과가있었습니다. [참고] (https://stackoverflow.com/questions/1992018/git-submodule-update-needed-only-initially/2227598#2227598). 왜 그랬을까요? – nzn

+0

@nzn 잘 모르겠습니다. 둘 다 테스트 해봤는데 작동합니다. 어떤 자식 버전을 사용하고 있습니까? – VonC

관련 문제