2016-12-05 1 views
1

처음으로 자식 서브 모듈로 작업하고 있습니다. 전반적인 지점을 만들고 모든 원격 저장소에 추가하는 방법을 이해하는 데 어려움을 겪습니다.자식 서브 모듈로 여러 원격 분기 만들기

현재 내 파일 구조는 다음과 유사합니다

-parent_repo 
    | 
    |_ submodule_1 
    |_ submodule_2 
    |_ submodule_3 
    |_ submodule_4 
    |_ submodule_5 
    |_ submodule_6 
    |_ submodule_7 

나는 부모의 repo에 지점 작성하는 경우 : 나는 부모를 포함한 모든 서브 모듈에 걸쳐 분기를 만들 싶습니다

(master) $ git checkout -b feature/my_feature 
(feature/my_feature) $ git commit -m "created my_feature" 
(feature/my_feature) $ git push -u origin feature/my_feature 

합니다. 그 후 모든 분기가 각 하위 모듈과 존중받는 저장소에 원격으로 푸시됩니다. 실패 ..just

$ git submodule foreach -b branch_name 
$ git push --recurse-submodules=on-demand 
$ git submodule foreach "(git checkout branch_name; git pull)&" 

:

다음 단계를 시도했다. 첫 번째 명령을 찾을 수 없습니다.

.. 그리고 내가 할 경우 :

$ git config -f .gitmodules submodule.submodule_1.branch branch_name 
$ git submodule update --remote 

자식을 반환 :

fatal: Needed a single revision 
Unable to find current origin/branch_name revision in submodule path 'submodule_1' 
+0

'git submodule foreach -b branch_name'은'git submodule foreach '가되어야합니다. git checkout -b branch_name'' –

답변

1

Submodule tips 참조 : 예를 들어

, 이제 우리는 새로운 기능을 시작하려는 또는 가정 해 봅시다 버그 수정을하고 우리는 여러 서브 모듈에서 계속 작업을합니다.

$ git submodule foreach 'git stash' 
Entering 'CryptoLibrary' 
No local changes to save 
Entering 'DbConnector' 
Saved working directory and index state WIP on stable: 82d2ad3 Merge from origin/stable 
HEAD is now at 82d2ad3 Merge from origin/stable 

그런 다음 우리는 새로운 지점을 만들 수 있습니다 우리의 모든 서브 모듈에 전환 :
우리는 쉽게 우리의 모든 서브 모듈에서 모든 작업을 숨길 수

$ git submodule foreach 'git checkout -b featureA' 
Entering 'CryptoLibrary' 
Switched to a new branch 'featureA' 
Entering 'DbConnector' 
Switched to a new branch 'featureA' 

그런 다음 모든 서브 모듈 repos가 변경 될 것이므로 부모 repo에 동일한 분기를 만들고, 추가, 커밋 및 푸시해야합니다.

기억하십시오 : 이들은 다른 분기 (동일한 이름이 있더라도), 각 고유 한 repo (부모 repo 또는 하위 모듈 repo)에 고유합니다.

+0

위에서 언급 한 것처럼 브랜치를 만들고 체크 아웃하면됩니다. 어떤 작품. 각각에 들어가서 원격 지점을 만들지 않고 모든 저장소에서'push -u origin featureA '를 할 수 있다는 것에 익숙하십니까? '$ git submodule foreach '와 같은 뭔가가 push -u origin feature A ''와 같은 것입니다. 서브 모듈은 ssh가 아닌 repo에 대한 http 참조를 사용하여 생성되므로 자격 증명을 묻는 메시지가 나타납니다. – Josh

+0

@ 조쉬 당신은 하나의 하위 모듈에서 그것을 시도 할 수 있으며, 그 자격 증명을 한 번만 캐싱 할 수 있습니다 : http://stackoverflow.com/a/13386417/6309의 시작 부분을보십시오. – VonC

관련 문제