2015-01-22 4 views
0

기존 자식 Repo (existingrepo)가 있습니다. 이제 특정 태그 버전/출시 버전 만 포함하는 git repo (newrepo)를 만들고 싶습니다. 예를 들어 특정 버전의 새 저장소 만들기

,
existingrepo v0.1 
existingrepo v0.2 
existingrepo v1.0 
existingrepo v1.1 
existingrepo v1.2 
existingrepo v1.3 
existingrepo v2.0 

newrepo v1.0 
newrepo v2.0 

자식이를 달성하기위한 권장 방법은 무엇입니까

?

+0

복제에'복제 existingrepo'에 의해'newrepo' 만들기 만 커밋을 유지하기 위해 대화 형 REBASE를 사용 관심의 대상. – Jubobs

+0

@Jubobs 더 나은 접근 방법은 모든 버전 (아마도 태그)을 반복하는 것일 수 있습니다.'git archive'를 사용하여 해당 버전의 zip/tar 파일을 작성한 다음 'newrepo'로 압축을 풀고 적절한 커밋 메시지로 커밋하십시오 . 대화 형 리베이스를 사용하여 수천 개의 커밋을 선택하고 나머지는 모두 스쿼시해야한다는 점을 싫어합니다. – twalberg

+0

@twalberg 나는 그것에 대해 알지 못합니다. 나는 많은 수의 커밋들로 나의 접근법이 다루기 힘들다는 것에 동의한다; 그러나 좋은 텍스트 편집기를 사용하고 유지할 커밋 수가 적다면 번거 로움이 없어야합니다. – Jubobs

답변

2

난 당신이 태그 관련 한에 관심이있는 모든 버전을 가정하고,이 방법을 걸릴 것 :

cd existingrepo 
for v in $(<list_of_versions.txt) 
do 
    git archive --format=tar "refs/tags/${v}" | (cd newrepo; git rm -rf *; tar xpf -) 
    (cd newrepo; git add -A .; git commit -m "Import of version ${v}"; git tag "${v}") 
done