2012-07-03 3 views
2

여기에서 검색과 검색을했는데 아무 것도 내 질문에 대답하지 않는 것 같습니다. 나는 현재의 폴더 구조와 자식 저장소를디렉토리를 하위 모듈로 분할

/app/folder/ 
    /app/folder2/.. 
    /app/bundles/bundle1 
    /app/bundles/bundle2 

내가 디렉토리 레이아웃을 유지, 해당 번들의 코드에 대한 모든 버전 관리 기록을 유지, 자신의 서브 모듈로 번들의 모든 번들을 설정하고 싶습니다 정확히 같은. 그 이유는 일부 번들을 사용하려는 다른 앱이 있기 때문입니다.

나는

git filter-branch --subdirectory-filter bundles/client -- --all 

을 사용하여에 이동했다 그러나 이것은 어떤 도움을 크게 감상 할 수

.... 옳은 일이 아니었다.

답변

0

사실, --subdirectory-filter를 사용하는 것이 정확하게해야 할 일이었습니다. filter-branch 맨 페이지의 예제에도 나와 있습니다. 물론 현재 작업중인 분기를 새 작업으로 대체하여 작업 결과를 포함합니다. 원래의 브랜치 (그것의 포인터)는 대개 "refs/original /"에 저장됩니다 (맨 페이지의 --original 옵션 참조). 당신은 다른 곳에서 활성 지점에 복사 할 수 있습니다 :

git branch bundles/client 

을 복원 당신은보다 번들로 활성 분기를 내보낼 수 있습니다

git reset --hard original/refs/heads/oldbranchname 

현재 지점 또는 서브 모듈에서 직접 가져 와서 제거 상위 저장소에서 참조.

filter-branch에 대한 --all 옵션이 사용 된 경우 모든 분기가 활성 분기의 운명에 영향을 받기 때문에 각 분기에 대해 복사 작업을 반복해야합니다.

슬프게도 출력 분기 이름을 filter-branch 명령에 지정할 수 없습니다. Git 메일 링리스트에 대한 제안이 가치가 있을지도 모른다.

+0

감사합니다. 네 뇌를 좀 더 골라 낼 수 있겠 니? 그래서 명령을 실행 한 후에해야 할 것은 저장소에있는 번들/클라이언트뿐입니다. 그런 다음 새로운 분기로 남겨진 것을 분기하여 서브 모듈로 전환해야합니다. 그런 다음 이전 분기를 재설정하고 delete/app/bundles/client /를 입력 한 다음 해당 하위 모듈을 가져 오겠습니까? 흠, 정말로 많은 질문이 아니라, 미안 해요! ;) 설명을 필요로하는 두뇌 덤프의 더 많은 것;) 다시 감사합니다, Alan –

+0

당신을 진심으로 환영합니다! 당신이 그것들의 사본을 만들기 전에 물건을 삭제할 때 조심하십시오 :) – fork0

관련 문제