'git submodule'을 사용하여 특정 버전의 하위 모듈을 확인하려면 어떻게해야합니까?


답변:


167

서브 모듈 저장소는 특정 커밋을 가리키는 분리 된 HEAD 상태로 유지됩니다. 해당 커밋을 변경하려면 단순히 다른 태그 또는 커밋을 체크 아웃 한 다음 변경 사항을 상위 저장소에 추가하면됩니다.

$ cd submodule
$ git checkout v2.0
Previous HEAD position was 5c1277e... bumped version to 2.0.5
HEAD is now at f0a0036... version 2.0

git-status 이제 부모 저장소에서 더티 트리를보고합니다.

# On branch dev [...]
#
#   modified:   submodule (new commits)

하위 모듈 디렉토리를 추가하고 새 포인터를 저장하도록 커밋합니다.


14
하위 모듈의 특정 분기 / 버전으로 상위 저장소를 커밋 한 후 다른 사용자가 나중에 동일한 버전의 하위 모듈을 체크 아웃 할 수 있습니까? 아니면 수동으로 다시 지정해야합니까?
QZHua

@QZHua : 직접 실험했는데 부모가 복제 될 때 하위 모듈의 커밋 ID가 유지되는 것 같습니다.
Psychonaut

37

1 단계 : 하위 모듈 추가

   git submodule add git://some_repository.git some_repository

2 단계 : 특정 커밋에 하위 모듈 수정

기본적으로 새 하위 모듈은 마스터 브랜치의 HEAD를 추적하지만 기본 저장소를 업데이트 할 때 업데이트되지 않습니다. 특정 커밋 또는 다른 분기를 추적하도록 하위 모듈을 변경하려면 일반 저장소에서와 같이 디렉토리를 하위 모듈 폴더로 변경하고 분기를 전환합니다.

   git checkout -b some_branch origin/some_branch

이제 서브 모듈은 마스터의 HEAD 대신 개발 브랜치에서 수정되었습니다.

에서 : 특정 커밋 또는 지점에 타이 망할 놈의 서브 모듈 - 두 사람이 논쟁 .


20
사용하기 더 쉽습니다git submodule add -b some_branch git://some_repository.git some_repository
Caumons

15
현재로서는 git submodule add -b태그 나 sha1hash 를 사용할 수 없는 것 같습니다 . 분기 만 취할 수 있습니다.
CMCDragonkai

Git 문제 추적기에 이에 대한 문제가 있습니까? 우리가 추적 할 수 있도록 누군가 친절하게 URL을 게시 하시겠습니까? 감사.
colan

버그보고에 대한 @colan 지침은 git-scm.com/community에 있습니다. 그러나 -b태그 나 커밋이 아닌 브랜치를 지원하는 것은 버그가 아닌 기능입니다 (사실 -b은 약어입니다 --branch).
henry

1
한숨. 몇 년이 지난 후에도 여전히 공개 문제 추적기가 없습니다.
colan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.