2008-10-10 7 views
60

경고 단어 : 나는 git에 일반적으로 n00b입니다. 우리 팀은 svn에 지부를 사용하고 있습니다. git-svn을 사용하여 특정 지형지 물에 대한 내 작업을 추적하고 싶습니다. 내 로컬 git repo를 설정하기 위해 (대략) Andy Delcambre's post을 따라 왔지만, 그 지시는 git이 가장 최근에 원격 저장소로 변경된 svn 분기를 선택하도록 유도 한 것 같습니다. 문제는 내가 신경 쓰는 가지가 아니라는 것이다. git-svn 지점을 어떻게 제어합니까? 아니면 내가 완전히이 문제에 접근하고 있습니까?git-svn이 원격 저장소로 특정 svn 브랜치를 사용하도록하려면 어떻게해야합니까?

업데이트 :합니다 (svn의 repo 여러 프로젝트를 가지고,하지만 난 git의 repo 내가 일하고 있어요 단지 프로젝트를 포함 할 때문에 내 경우) -T, -b-t 옵션을 사용했다.

답변

60

이 편리한 Bart의 블로그에 Muchas gracias reference for svn branches in git. 예를 들어, foo 원격 브랜치의 이름입니다

git checkout -b git-topic-branch-foo foo 

git 분기를 만들 때 분명히 내가 필요한 모든 원격 지점을 지정했다.

+8

이미 git 브랜치를 생성했다면,'git rebase'를 사용하여 브랜치 브랜치를 svn 브랜치에 rebase 할 수 있습니다. – rampion

+0

http://www.jukie.net/~bart/blog/svn-branches-in-git는 오류 500을 반환합니다. 블로그가 옮겨 졌습니까? – Henry

+0

고맙다. 이것은 분리되지 않은 상태의 지사를 체크 아웃하는 유일한 방법 인 것 같다. –

1

git-svn을 사용하지만 SVN 분기와 상호 운용되는 기능을 사용하지 않았습니다. 말씀 드렸듯이, 다음 튜토리얼에서는 -T, -b, -t 옵션을 svn init에 사용하지 않았습니다. 이 옵션은 git-svn에게 상류 트렁크/브랜치/태그 디렉토리의 이름이 무엇인지 알려주며 상황에 따라 중요합니다.

+0

감사합니다. Greg. 불행히도 저에게는 설정과 블로그의 차이점이 있습니다. –

30

git-svn is a gateway drug - robby on rails도보실 수 있습니다. 내 현지 지사가 올바른 원격 svn의 지점을 가리키는 것을 확인하기 위해 필요한 경우

나는 이런 식으로 뭔가를 사용 :

git branch -r 

내가 추적해야 할 원격 지점의 이름을 얻을 수 있습니다. 그런 다음

git reset --hard remotes/svn-branch-name 

명시 적으로 다른 원격 지점을 가리 키도록 내 로컬 지점을 변경합니다.

+2

git 재설정에 +1 +1 - 내가했던 것 : –

+1

이것은 로컬 브랜치가 원격 svn 브랜치의 현재 상태로 업데이트하도록하는 수동 프로세스입니다. 내가 읽고있는 질문은 git의 원격 추적 기능과 관련이 있으며 git이 SVN의 특정 분기를 자동으로 원격 추적하도록 구성합니다. –

9

처음으로 'git svn fetch'를 실행해야했습니다. 연관시키고 자하는 지점이 내 자식 클라이언트 뒤에 만들어 졌기 때문입니다.

+0

감사합니다.이 팁과 참고 사항으로 .git/svn/refs/remotes에서 리모컨을 볼 수 있습니다. 새로운 것이 있으면 'git svn fetch'를 실행 한 후에 표시됩니다. . –

+0

.git을 보니 조심해야 할 것들이 있습니다. 특히, refs는 packed-refs로 포장 될 수 있습니다. 특히 많이 변경되지 않는 경우에는 refs가 포장되어있을 수 있습니다. 'get checkout -b git-topic-branch-name-remote-branch-name'을 실행하고'fatal : git checkout : path를 갱신하면 git show-ref가 더 잘 수행되고 (아마) git branch -r이 더 좋다. – ComputerDruid

+1

' 다음에'git branch -r'를 실행하면, 그 지점이 보이지 않으면'git svn fetch'가 필요할 때입니다. ('git svn rebase'는 새로운 브랜치를 가져 오지 않지만'git svn fetch'는됩니다) –

관련 문제