여러 하위 모듈이있는 Git 저장소가 있습니다. git submodule init
실행 된 후 모든 하위 모듈의 이름을 어떻게 나열 합니까?
git submodule foreach
명령은 서브 모듈의 이름을 에코 할 수 있지만,이 초기화 단계 이후에 무슨 일이 있었되지 않은 체크 아웃 한 후에는 것을에만 작동합니다. 체인에 체크 아웃하기 전에 더 많은 단계가 필요하며 하위 모듈의 이름을 스크립트에 하드 와이어 링하지 않아도됩니다.
그렇다면 현재 등록되었지만 아직 체크 아웃되지 않은 서브 모듈의 이름을 가져 오는 Git 명령이 있습니까?
답변
git submodule init
사용 자체 와 동일한 메커니즘을 사용할 수 있습니다 .gitmodules
. 이 파일은 각 서브 모듈 경로와 그것이 참조하는 URL을 열거합니다.
예를 들어, 저장소 루트에서 cat .gitmodules
내용이 화면에 표시됩니다 (가 있다고 가정 cat
).
.gitmodule 파일은 Git 구성 형식을 가지므로 git config를 사용하여 해당 파일을 구문 분석 할 수 있습니다.
git config --file .gitmodules --name-only --get-regexp path
모든 하위 모듈 항목을 표시하고
git config --file .gitmodules --get-regexp path | awk '{ print $2 }'
서브 모듈 경로 자체 만 가져옵니다.
답변
중첩 된 하위 모듈을 표시하려는 경우 git submodule status
또는 선택적으로 사용할 수 있습니다 git submodule status --recursive
.
Git 문서에서 :
서브 모듈의 상태를 표시하십시오. 그러면 서브 모듈 경로 및 SHA-1에 대한 git describe 출력과 함께 각 서브 모듈에 대해 현재 체크 아웃 된 커밋의 SHA-1이 인쇄됩니다. 서브 모듈이 초기화되지 않은 경우, 각 체크 아웃 된 서브 모듈 커밋이 포함 저장소의 인덱스에서 찾은 SHA-1과 일치하지 않으면 +, 서브 모듈에 병합 충돌이있는 경우 U가 각 SHA-1 앞에 붙습니다.
답변
등록 된 서브 모듈의 이름 만 반환하려면 다음 명령을 사용하십시오.
grep path .gitmodules | sed 's/.*= //'
git submodule --list
존재하지 않는 것으로 생각하십시오 .
답변
다음 명령은 서브 모듈을 나열합니다 :
git submodule--helper list
출력은 다음과 같습니다.
<mode> <sha1> <stage> <location>
참고 : Git 2.7.0 이상이 필요합니다.
답변
사용하다:
$ git submodule
지정된 Git 저장소의 모든 하위 모듈을 나열합니다.
답변
나는 이것을 사용한다 :
git config --list|egrep ^submodule
답변
이 질문에 대한 답변으로 제공된 명령이 내가 찾고있는 정보를 제공한다는 것을 알았습니다.
.gitmodule에서 하위 모듈이 아닌 경로에 대한 하위 모듈 매핑이 없습니다.
git ls-files --stage | grep 160000