이 안내서 에 따라 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
peff
gitster
gitster
pathspec
: 서브 모듈 관련pathspec
오류에 대한 더 나은 메시지 제공
git add a/b
”a
“가 하위 모듈 인 경우 ” “를 실행 하면 오류가 발생하지만 의미있는 오류 메시지가 표시되지 않습니다.
답변
내 문제는 실수로 .git
하위 모듈 의 폴더를 삭제하는 것 같습니다 .
답변
초기화되지 않은 서브 모듈 (기본적으로 .git
디렉토리가 없음)에서 작동하는 것처럼 들리 므로 먼저 초기화하고 업데이트해야합니다.
git submodule init
git submodule update
그렇지 않으면이 서브 모듈이 더 이상 필요하지 않으면 다음과 같이 제거하십시오.
git submodule deinit _site
또는:
git rm -f --cached _site
다시 추가하십시오.
git add _site
현재 미해결 서브 모듈을 확인하십시오 : git submodule status
.
답변
프로젝트 내에 하위 모듈 디렉토리가 둘 이상있는 경우에도이 문제를 100 % 수정하십시오.
> git submodule foreach --recursive deinit -f --all -- <relative path>
> git add --all -f