2012-03-26 2 views
9

상대 서브 모듈 멍청한 놈이기 때문에, 나는 그것의 기원에서 내 서브 모듈을 업데이트 원했고,했던 :내 자식 서브 모듈의 상태는 어떻고 어떻게 정리할 수 있습니까?

git pull origin master 
: 해결하기 위해 노력

remote: Counting objects: 111, done. 
remote: Compressing objects: 100% (3/3), done. 
remote: Total 57 (delta 54), reused 57 (delta 54) 
Unpacking objects: 100% (57/57), done. 
From github.com:eteanga/smarty 
    8e9a011..818ab3e master  -> origin/master 
You are not currently on a branch, so I cannot use any 
'branch.<branchname>.merge' in your configuration file. 
Please specify which remote branch you want to use on the command 
line and try again (e.g. 'git pull <repository> <refspec>'). 
See git-pull(1) for details. 

:

git pull 

이것은 결과

출력 :

From github.com:eteanga/smarty 
* branch   master  -> FETCH_HEAD 
Updating 8e9a011..818ab3e 
Fast-forward 
[snip] 

업데이트 된 코드를 얻은 것 같습니다. 그러나 현재 어떤 지점에서도 작업하지 않습니다.

서브 모듈을 올바르게 업데이트하려면 어떻게해야합니까? 현재 상태를 수정하려면 어떻게해야합니까?

답변

16

git submodule update 다음에 하위 모듈의 HEAD이 수퍼 프로젝트에 저장된 하위 모듈 커밋 - 해시로 설정됩니다. 당신이 origin/master의 새로운 커밋을 추적하기 위해 서브 모듈의 HEAD를 재설정하려면 먼저 master에 체크 아웃해야하고 변경 끌어 : 그,

git checkout master 
git pull origin master 
+0

감사합니다 친절 : 서브 모듈 디렉토리에서

을 효과가있는 것 같습니다. 이 메인 복구가 체크 아웃 된 각 머신에서 최신 서브 모듈 코드를 가져 오려면이 업데이트를 수행해야합니까? – eoinoc

+0

동일한 문제가 있습니다. 체크 아웃 된 각 저장소의 각 하위 모듈에 대해이 작업을 수행해야합니다. 나는 단지'git clone --recursive'를 사용하여 마스터 레포를 복제 할 수있는 솔루션을 찾고 싶습니다. 그리고 나서 필요에 따라 각 서브 모듈에 대한 변경 사항을 밀어 넣으십시오. 누구든지이 작업을 수행하는 방법을 알고 있습니까? – Simon

+2

** 그냥 나를 때리십시오 ** :'git submodule foreach '*이 트릭을 수행 한 후에 위의 대답에서 두 명령을 모두 실행하십시오. 그래도 잠재적 인 부작용은 확실치 않습니다 ... – Simon

관련 문제