2017-05-09 4 views
1

어떻게 새 gif에 기존 github repos를 추가합니까? 기존의 repo에서 모든 파일의 폴더 구조와 기록을 보존하는 새로운 repo에 파일을 추가하려는 의도로 "병합"하지 않습니다. 다른 하나에 github repo 추가

나는 3 개 가지의 repos

github.com/foo/1.git 
github.com/foo/2.git 
github.com/foo/3.git 

그들 각각의 폴더 및 파일의 집합을 가지고 있습니다.

기존의 repos를 추가하고 싶은 4 (github.com/foo/4.git)라는 새로운 것을 만들고 있습니다.

git clone github.com/foo/4.git 
git clone github.com/foo/1.git 
cd 4 
git remote add 1 ../1 
git fetch 1 
git branch 1-master 1/master 
git merge 1-master 

내가 커밋 후, 내가 발견하는 것은 1에서 파일 및 폴더를 직접의 내가 1에서 abc.txt 있다고 가정 해 봅시다 4.

에 복사되었는지이었다

내가 이런 짓을 , 그때 나는 4 이하 abc.txt를 보았다.

내가보기를 원하는 것은 보존 된 abc.txt의 역사가있는 4/1/abc.txt보다 4/abc.txt이다.

어떻게해야합니까? 하지만 하위 폴더에 자신의 전체 역사를 이동을 재 작성 후, 당신은 다른 REPOS의 전체 역사에 병합 할 http://blog.caplin.com/2013/09/18/merging-two-git-repositories/

+1

하위 모듈을 찾고 있습니다. – SLaks

+0

내가 정말로 원하는 것은 역사를 보존하고 나중에 1,2,3을 삭제하면서 1,2,3 번에서 4 번으로 파일을 추가하는 것입니다. 어떻게해야합니까? 하위 모듈이 1,2,3에 대한 포인터 일 뿐이라고 믿는 것처럼 여기에 서브 모듈이 도움이되는지 확실하지 않습니다. – serverfaces

답변

0

: 내가 추가하는 작업을 시작하기 전에 보조 노트에

, 나는이 기사를 읽어 보시기 바랍니다.

그게 바로 git filter-branch입니다. 각 subrepo 들어

:

  1. 복제하려면 subrepo
  2. '자식 필터 분기 --tree 필터 "MV */DIR"
  3. 마스터 REPO
  4. 의 리모컨으로 클론을 추가
  5. 리모컨을 가져 오려면
  6. git merge 또는 (마스터의 기록도 다시 작성하려는 경우) git rebase 마스터의 기본 브랜치에 가져온 (및 이미 다시 작성된) 리모컨을 가져옵니다.