git 하위 모듈을 추가 할 때 "당신은 아직 태어나지 않은 가지에 있습니다"


116

.vim/bundles디렉토리에 몇 가지 하위 모듈을 추가하려고 시도하고 있는데 ,이 특정 저장소를 추가하려고하면 Git에서 이전에 본 적이없는 이상한 오류가 발생합니다.

$ git submodule add -f git://github.com/derekwyatt/vim-scala.git .vim/bundle/vim-scala
fatal: You are on a branch yet to be born
Unable to checkout submodule '.vim/bundle/vim-scala'

원인이 무엇인지 아십니까?

동일한 repo를 테스트 디렉토리에 복제하면 (submodule 명령을 통하지 않음) 제대로 작동하고 예상 파일이 생성됩니다.

답변:


210

이 오류를 수정하려면 .git/modules/디렉토리 내의 하위 모듈과 동일한 경로를 가진 폴더를 삭제해야합니다 . 이 오류는 서브 모듈이 처음 추가되었을 때 서브 모듈에 대한 URL이 잘못되었을 때 발생할 수 있습니다.


2
감사합니다. 그게 트릭이었습니다. 내가 .vim/bundle/vim-scala삭제 경로 로 복제하고 있었기 때문에 처음에는 약간 명확하지 않았습니다.git/modules/.vim/bundle/vim-scala
matt b

2
만약 당신이 윈도우를 사용한다면 .git / modules 아래의 디렉토리는 당신이 아닌 이상 나타나지 않을 수 있습니다dir /AH
paxos1977

13
해당 .git/modules/path/to/submodule디렉토리를 삭제 하고 하위 모듈을 다시 추가하려고하면 오류가 발생합니다 . 다음 경로는 .gitignore 파일 중 하나에서 무시됩니다 : path / to / submodule .
Drew Noakes

1
@ 드류 녹스 삭제 .vim / 번들 자식 서브 모듈의 추가의 첫 번째 실행 후 생성 / 정력 - 스칼라
표트르 크롤

Windows에서는 Windows 탐색기 옵션 (파일 확장자를 보도록 선택하는 것과 같은 위치)을 사용하여 GUI에서 숨겨진 폴더를보고 삭제할 수도 있습니다.
user83358 jul.

13

당신은 서브 모듈을 추가 할 필요가 내부에 그 REPO 추가 및 서브 모듈 링크를 커밋 상태에 있어야합니다, 기존의 repo 자체의 repo 서브 모듈은 체크 아웃 할 것을 약속해야합니다.

이제 다른 곳에서 일반 복제본을 만들 수 있다면 하위 모듈 저장소 자체가 정상이어야합니다. 그러나 submodule add복제는 그렇지 않은 반면 저장소가 비어 있으면 불평 하는 것처럼 보입니다 . 이 사람 은 동일한 submodule add명령을 다시 실행하여 해결할 수 있다고 제안 합니다.

내부 저장소가 비어 있지 않으면 하위 모듈 을 포함 할 저장소를 확인하십시오 . 을 실행 한 동일한 디렉토리로 변경하고을 git submodule add실행 git status하고 git branch포함하는 저장소에 하나 이상의 브랜치가 생성되었고 이상한 상태가 아닌지 확인합니다.


이 모든 것을 확인했습니다. 원하는 저장소를 다른 디렉토리로 체크 아웃하면 많은 파일과 master분기가 있습니다. 하위 모듈로 추가하려는 저장소는 master브랜치에 있고 명백한 문제가 없으며 (상태는 일부 수정 된 파일을 반환하지만 그게 전부입니다)이 저장소에 다른 하위 모듈을 추가 할 수 있다는 것이 가장 이상합니다. .
matt b

또한 이상합니다 : fatal내 OP 의 경고 후 git은 .vim/bundle/vim-scala. 나는 또한 .gitmodules손대지 않았지만 이 github.com repo를 참조하는 일부 줄을에 추가 .git/config했지만 제거 한 후에도 여전히 동일한 fatal오류 메시지가 나타납니다.
matt b

7
+1 아아! This guy suggests this is fixable by just running the same submodule add command again.. 나는 현명한 답을 찾기 위해이 문제와 싸우고 있었고 마침내 해결되었습니다. 이것은 BitBucket에서 하위 모듈을 만드는 동안 MSYS에서 git 1.8.0을위한 것이기 때문에 같은 상황에 있다면 먼저 시도해보십시오.
Aaron Newton

두 번 더하는 것도 나에게 효과적이었습니다. 그러나 나는 이유를 이해하지 못한다. 설명이 있습니까?
Elise

여기에도 두 번 추가합니다. 그래도 이유를 이해하고 싶습니다
Vinicius Dantas

12

이 오류는 master분기 가없는 하위 모듈을 추가하는 경우 발생할 수 있습니다 . develop예를 들어 서브 모듈을 추가 할 때 다른 분기 를 사용하려면 다음 명령을 사용할 수 있습니다.

git submodule add -b <branch> <repository>

1
제 경우에는 repo가 ​​새로 생성되었으므로 파일과 브랜치 (비어 있음)가 없었기 때문에 git submodule add -b master <repo.git> <folder>도움이되었습니다
vladkras

이것은 내 하위 모듈에 2 개의 분기 만 있었지만 master귀하의 솔루션이 나를 위해 일한 것이 아닙니다 .
Guerneen4

0

@ drew-noakes가 언급했듯이 이것은 .gitignore 파일에 나열된 디렉토리 이름을 사용하여 하위 모듈을 추가하려고 할 때 발생할 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.