2012-06-28 2 views
3

서브 모듈 충돌이있는 경우 (즉, 두 커밋에 참조 된 커밋의 다른 변경 사항이 포함 된 경우) 하위 모듈을 "theirs"커밋으로 쉽게 설정할 수 있습니까? 파일의 경우 다음을 수행합니다.힘내 : 어떻게 서브 모듈 충돌의 "그들의"버전을 받아들이겠습니까?

git checkout --theirs <file> 

그러나 이것은 하위 모듈에서는 작동하지 않습니다.

$ git ls-files -s module 
160000 89b085c4269259fa22632353071e6875f158afde 1  submodule 
160000 b9ad3bc8aafdf52a2adf74620afae8934474b82d 2  submodule 
160000 1afd42893d18ef5edeeadd67e7c65262505e6004 3  submodule 

와 내가 원하는 것은 단계에서 "그들의"버전을 사용하는 것입니다 좀 더 기술적 인 수준에서 내가 무엇을해야하는 단계 에 대한 submodule을 포함하는 인덱스, 및 입니다 :

$ git ls-files -s module 
160000 1afd42893d18ef5edeeadd67e7c65262505e6004 0  submodule 

업데이트 : 제거 참조 http://fiji.sc/wiki/index.php/Git_submodule_tutorial 거짓 주장.

업데이트 2 : 색인 관련 예제가 추가되었습니다.

+0

서브 모듈 폴더 내부에서'git checkout --theirs'를 실행하려고 시도 했습니까? – penartur

+0

아니요, 상위 리포지토리 폴더에 있습니다. – mstrap

+0

하위 모듈은 독립적 인 저장소입니다. 그 (것)들을 취급하는 특정한 명령이있다. – YuriAlbuquerque

답변

3

상위 저장소는 하위 모듈 저장소의 현재 작동중인 버전을 나타냅니다. "submodule pointer"는 항상 서브 모듈의 작업 복사본을 가리 킵니다.

그래서 원하는 상태로 서브 모듈 저장소를 배치해야합니다 (이 경우에는 "theirs"버전으로 업데이트). 그 후에, "submodule pointer"는 자동으로 업데이트 될 것입니다 (물론, 변경을 저지해야합니다).

+0

하위 모듈을 건드리지 않고 상위 리포지토리에서 3 단계를 0 단계로 바꾸는 (쉬운) 방법이 없습니까? – mstrap

+0

@mstrap 하위 모듈 작업 복사본이 "stage 3"에있는 동안 부모 저장소 작업 복사본이 "stage 0"을 참조하도록 하시겠습니까? 왜 이걸 원하니? 상위 저장소의 작업 복사본이 "stage 0"(git에서 참조) 또는 "stage 3"(작업 복사본의 실제 파일)을 사용해야하는 경우 어떻게 생각합니까? 위 예제의 경우 – penartur

+0

, 스테이지 0과 스테이지 1-3에서 "1afd42893d18ef5edeeadd67e7c65262505e6004"를 가져와서 하위 모듈의 상태가 "conflicted"에서 "modified"로 변경됩니다. – mstrap