현재 Git에 SVN 저장소를 가져오고 있습니다. SVN 저장소의 구조는 조금 지저분하므로 3 개의 별도의 Git 저장소로 변환 한 다음 모두 함께 병합해야합니다. 이러한 하나의 역사를 세 부분으로 간단한 프로젝트라면이식 된 Git 내역에 병합 도입하기
, 나는 그냥 다른, 예를 들어 위에을 리베이스 수 있습니다
cd part3
git remote add -f part1 url_to_part1
git remote add -f part2 url_to_part2
git rebase part2/master
git rebase part1/master
그러나 part3
내 위의 예에서 포함 태그 수십 세 가지. 부품 1과 2가 SVN 내에서 master
(잘, 트렁크)으로 깔끔하게 병합 되었다면, this과 같은 것을 사용하여 분기를 이력에 올바르게 이식합니다. 리베이스 (rebase)와는 달리 모든 태그가 그대로 유지되는 이점이 있습니다.
그러나 분기 중 하나에 고아가 된 커밋이있어 이제는 병력에 병합하고 싶습니다. 이제 내가 이식편으로 병력을 고치려고하면 고아가 된 커밋의 변화가 사라집니다. 아래 예제에서, X에서 C 로의 병합은 SVN에서 발생 했으므로 접목으로 링크를 만들 수 있습니다. 그러나 나는 내가 이식이 파일 같은 것을 사용하여 그래프 구조를 지정할 수있는 방법이 있나요 커밋 E, G 등
A-B-C-[ ]-D-E-F-G-H-...
\//
X--O
에 태그를 유지하면서, C와 D 사이에 분리 된 커밋 O를 병합 할 그런 다음 실제로 묵시적 병합을 실행합니까? 아니면 여기에 사용해야하는 필터 분기 명령이 있습니까?
[이 질문에 대한 참고] (http://stackoverflow.com/questions/3810348/setting-git-parent-pointer-to-a-different-parent/3811028#3811028) 제안 할 수 없습니다. 이식편. 태그를 리버스 (rebase) 한 다음 수동으로 이동해야합니다. – jkeirstead