2017-12-15 1 views
0

submodules을 포함하는 git repo에서 작업하고 있습니다. 모든 서브 모듈 (상위 모듈 포함)에 동일한 이름 (예 : master, ..)의 브랜치가 있으며, 모두 해당 원격 브랜치를 추적합니다.힘내 : 모든 하위 모듈에서 재귀 적으로 분기 (체크 아웃) 전환

한 번에 모든 하위 모듈에서 같은 분기를 체크 아웃하고 싶습니다. 다시 말해, 내가 원하는 것은 상위 모듈의 development 분기로 전환하면 모든 하위 모듈도 development 분기로 전환되어 내 작업 트리가 분기와 일관되게 유지되어야한다는 것입니다.

수동으로 수행하는 것은 고통스럽고 반복적입니다. 바로 가기가 있습니까?

+0

'git submodule update'는 어쨌든 그들을 (분리 된 HEAD로) 업데이트 할 것입니다. 현재 지회를 어떻게 활용할 건가요? – max630

답변

0

나는 git-aliasbash script의 도움으로 이것을 달성했습니다.

이 git-rcheckout.sh라는 내 bash는 스크립트가 @qbein's answer

#!/bin/bash 
((!$#)) && echo No branch name, command ignored! && exit 1 
git checkout $1 && git submodule foreach --recursive git checkout $1 

다음에서 가져 팔로우 나는 told by @u0b34a0f6ae

git config --global alias.rcheckout '!sh ~/path/to/script/git-rcheckout.sh' 

문제로 명령을 rcheckout이 스크립트를 별칭 : 현재를 부모 모듈에서 git rcheckout branch-name 할 때만 작동합니다. 하위 모듈에서도 bash 스크립트를 업데이트 할 수는 있지만 너무 게으르다. 그래서 제안을 환영합니다.

+0

이 스크립트 및 별칭을 만드는 동안 샘플 (로컬) git repo에서 결과를 테스트했습니다. 이 기능이 원활하게 작동하는 동안 실제 생산 repo에서이 명령을 사용하려고하면 [ "refspec은 ...과 일치하지 않습니다"라는 오류로] 항상 실패합니다 (https://www.google.co.in/search ? safe = active & rlz = 1C5CHFA_enIN752IN752 & ei = 8uE0Ws3MLczovgSl3q7oCQ & q = git + refspec + 오류 + 전환 + 분기 & oq = git + refspec + 오류 + 전환 + 분기 & gs_l = psy-ab.3..33i21k1.26592.30397.0.30618.19.16.0.0.0.223.1958. 0j9j3.12.0 .... 0 ... 1c.1.64.psy-ab..7.9.1416 ... 0i22i30k1j33i160k1.0.AEQP4VXDwlU) 일단 해결되면 업데이트됩니다. –

관련 문제