힘내 : 치명적 : Pathspec이 서브 모듈에 있습니다 빌드합니다 . 그러나 git add

이 안내서 에 따라 TravisCI가 Hakyll 정적 사이트를 자동으로 배포하도록 노력하고 있습니다.

내 레포가 설정되는 방법은 다음과 같습니다. 내 hakyll 및 markdown 파일이 포함 된 소스 분기가 있습니다. 그것은 html을 _site디렉토리에 빌드하며 , 이는 내 master브랜치에 연결된 하위 모듈로 설정됩니다 .

문제없이 사이트를 빌드 한 다음 cd_site 디렉토리에 빌드합니다 . 그러나 git add ./*새로 생성 된 HTML 파일을 시도 하면 다음 오류가 발생합니다.

fatal: Pathspec './about.html' is in submodule '_site'

시도 git add --all하면이 오류가 발생합니다.

git: pathspec.c:317: prefix_pathspec: Assertion `item->nowildcard_len <= item->len && item->prefix <= item->len' failed.

/home/travis/build.sh: line 245: 1566 Aborted git add --all

이 문제의 원인은 무엇이며 어떻게 피할 수 있습니까?

여기서 저장소를 볼 수 있습니다 .



답변

git에서 디렉토리를 제거하고 다시 추가하면 나를 위해 일했습니다.

 git rm --cached directory
 git add directory

메인 git 프로젝트 .git에 추가 directory하고 싶기 때문에 의도적으로 디렉토리를 제거한 경우에 작동합니다 . 내 경우에는 git이 확장을 복제 git add .하고 너무 많이 생각하지 않고 실행했습니다 . Git은 내가 싫어하는 서브 모듈을 만들기로 결정했다. 그래서 나는 제거 directory/.git하고 만났다 Git: fatal: Pathspec is in submodule. 하위 모듈을 제거하는 방법을 찾을 수 없습니다. 위의 두 줄로 수정되었습니다.


답변

git add컨텍스트가 상위 저장소 ( “부모”는 하위 모듈을 포함하는 것을 의미) 인 것으로 보이며 경고를 트리거합니다.

다음을 사용하여 컨텍스트를 변경하십시오.

cd _site
git --git-dir=.git --work-tree=. add .
git --git-dir=.git --work-tree=. commit -m "new files"

이 작업이 효과가 있으면 하위 git add _site리포지토리 로 돌아 가야하고 하위 하위 리포지토리에 변경 사항이있을 수 있으므로 잊지 마십시오.

그리고 둘 다 밀어야합니다.


2017 년 1 월 업데이트 (2 년 이상 후)

Git 2.12에서는 prefix_pathspec: Assertion더 이상 볼 수 없습니다.

Stefan Beller ( )의 commit 2d81c48 (2017 년 1 월 9 일)을 참조하십시오 .
도움 : Jeff King ( )Junio ​​C Hamano ( ) . (의해 병합 – Junio C 하마노 00880a1 커밋 2,017 18 일월)stefanbeller
peffgitster
gitster

pathspec: 서브 모듈 관련 pathspec오류에 대한 더 나은 메시지 제공

git add a/ba“가 하위 모듈 인 경우 ” “를 실행 하면 오류가 발생하지만 의미있는 오류 메시지가 표시되지 않습니다.


답변

내 문제는 실수로 .git하위 모듈 의 폴더를 삭제하는 것 같습니다 .


답변

초기화되지 않은 서브 모듈 (기본적으로 .git디렉토리가 없음)에서 작동하는 것처럼 들리 므로 먼저 초기화하고 업데이트해야합니다.

git submodule init
git submodule update

그렇지 않으면이 서브 모듈이 더 이상 필요하지 않으면 다음과 같이 제거하십시오.

git submodule deinit _site

또는:

git rm -f --cached _site

다시 추가하십시오.

git add _site

현재 미해결 서브 모듈을 확인하십시오 : git submodule status.

참조 : 왜와 자식 erroring 자식 추가에 ‘어설 션 실패’입니다.?


답변

프로젝트 내에 하위 모듈 디렉토리가 둘 이상있는 경우에도이 문제를 100 % 수정하십시오.

> git submodule foreach --recursive deinit -f --all -- <relative path>
> git add --all -f

답변