2014-10-09 3 views
-1

git-svn을 사용하여 svn에서 git으로 분기를 가져 왔습니다. 나는 그들 모두를 git에 넣었지만, 그 지점 자체는 스탠드를 가리키지 않는다. 여기 그래픽 모습입니다 : 그것은 될 수 있도록git에서 원격 분기를 병합 및 제거

a<--b<--c<--d 
     \ \ 
      \ (master)(remotes/trunk) 
      \ 
      (remotes/feature1) 

a<--b<--c<--d<--e 
       \ 
        (remotes/branches/feature1) 

내가 원하는 것은 리모트/feature1에 합병 feature1 리모컨/가지를/가지고 리모트/지점/feature1을 삭제하는 것입니다 :

a<--b<--c<--d 
     ^ \ 
      \ (master)(remotes/trunk) 
      \ 
      e' (remotes/feature1) 

어떻게해야합니까? 나는 꽤 많이 찾았지만 내가 원하는 결과를 얻지 못했습니다.

+0

어떻게 git-svn이 작동하는지 모르겠습니다. "마스터"는 로컬 지점을 나타내고 "원격지/기능 1"은 원격지의 참조를 나타내는 두 개의 저장소가 있습니까? 아니면 그들 모두 지방 출신인가? –

+0

이것은 git-svn이 임포트를 한 후에 같은 로컬 저장소에 있습니다. 리모트 접두어가있는 브랜치는 원격 브랜치로 나열되며'git branch -r'를 사용하여 나열 할 수 있습니다. – rageit

+0

ok - 'remotes/branches/feature1 삭제'라고 말하면이 저장소에있는 참조만을 의미하며 실제 리모컨에 대한 참고 사항을 기록 하시겠습니까? 나는 그것을 추정 할 것이다 –

답변

0

두 번째 그래프에서는 e가 아닌 e로 끝납니다. 당신이 친자 관계를 바꿀 때마다, 소개 된 내용이 같더라도 새로운 사명을 갖게됩니다.

로컬 Repo에서 바보짓을하는 것처럼 보이고 업스트림을 변경할 필요가 없습니다. 그럴 경우 체리가 샤시를 움직일 수 있습니다. 분기 포인터에 강제 업데이트가 있습니다.

git checkout -b new_feature1 
git cherry-pick e 
git update-ref remotes/feature1 HEAD 
git update-ref -d remotes/branches/feature1 

실제로 리모컨에서 변경해야하는 경우 확실히 update-ref를하고 싶지는 않습니다. 대신 git push -f new_feature1:feature1git push --delete을해야합니다.

+0

체리 따기를 사용했습니다. – rageit

관련 문제