마크 Longair의 블로그 게시물에서 언급 한 바와 같이 망할 놈의 서브 모듈은 설명했다 ,
git 버전 1.7.0 이상에는 git 서브 모듈의 동작에 성가신 변화 가 포함되어 있습니다 .
서브 모듈은 수정 된 파일이나 추적되지 않은 파일이있는 경우 더티로 간주 되지만 이전에는 서브 모듈의 HEAD가 잘못된 커밋을 가리키는 경우에만 해당됩니다.
+
git 서브 모듈의 출력에서 더하기 부호 ( ) 의 의미 가 변경되었으며, 이것을 처음 접했을 때 변경 로그를 보거나 git에서 git bisect를 사용하여 무엇이 잘못되었는지 파악하는 데 약간의 시간이 걸립니다. .git에서 변경 사항을 찾으십시오. “지정된 버전에서는 더럽지 만”이라는 다른 기호를 사용하는 것이 사용자에게 훨씬 더 친절했을 것입니다.
다음 방법으로 문제를 해결할 수 있습니다.
부모 리포지토리로 돌아 가기 전에 각 하위 모듈 내에서 변경 / 진화를 커밋하거나 취소합니다 (diff가 더 이상 "더러운"파일을보고하지 않아야 함). 서브 모듈의 모든 변경 사항을 서브 모듈 cd
의 루트 디렉토리로 되돌리려면git checkout .
dotnetCarpenter는 코멘트 당신이 할 수 있다고 :git submodule foreach --recursive git checkout .
또는 "더러운"하위 모듈을 일시적으로 무시하려면을 추가 --ignore-submodules
하십시오 git diff
.
Git 버전 1.7.2의 새로운 기능
으로 노암는 아래의 코멘트 , 이 질문은 Git 버전 1.7.2 이후, 당신은 더러운 서브 모듈을 함께 무시할 수, 그 언급 :
git status --ignore-submodules=dirty
git commit -a
이러한 변경 사항을 추가하지 않아도 exec 을 실행할 수 있습니다 .M
앞면에 표시되어 있지만 커밋으로 끝나지 않습니다.