git-svn : git을 통해 새로운 svn 브랜치를 어떻게 만들 수 있습니까?


193

svn 저장소를 추적하는 자식 저장소가 있습니다. 나는 그것을 사용하여 복제했다.--stdlayout .

통해 새 지역 지점을 만들었습니다. git checkout -b foobar

이제이 분기가 …/branches/foobarsvn 저장소에 들어가기 를 원합니다 .

어떻게하면 되나요?

(많은 조사 텍스트를 빼앗 았습니다. 관심이 있다면 질문 기록을보십시오)


답변:


280

나는이 질문에 얼마 전에 대답 한 것을 알고 있지만 그것을 읽은 후에는 특정 git svn branch 명령의 예제를 추가하고 일반적인 워크 플로우와 관련시키는 데 도움이 될 수 있습니다.

kch 답변처럼을 사용하십시오 git svn branch. 전체 예는 다음과 같습니다 ( -n건조 테스트의 경우 참고).

git svn branch -n  -m "Branch for authentication bug" auth_bug

이것이 잘되면 서버는 다음과 같은 대답으로 응답합니다.

복사 https://scm-server.com/svn/portal/trunk을 에 r8914에서 https://scm-server.com/svn/portal/branches/auth_bug ...

-n스위치가 없으면 서버는 다음과 같은 것을 추가합니다.

가능한 지점 발견 : https://scm-server.com/svn/portal/trunk => https://scm-server.com/portal/branches/auth_bug , 8914

발견 된 브랜치 부모 : (refs / remotes / auth_bug)

d731b1fa028d30d685fe260f5bb912cbf59e1971

do_switch가있는 다음 부모

부모 r8915 = 6ed10c57afcec62e9077fbeed74a326eaa4863b8을 성공적으로 따름

(참조 / 원격 / auth_bug)

그것의 가장 좋은 부분은 다음과 같이 원격 브랜치를 기반으로 로컬 브랜치를 만들 수 있습니다.

git checkout -b local/auth_bug auth_bug

즉, "체크 아웃하고 이름이 지정된 로컬 브랜치를 생성 auth_bug하고 원격 브랜치 (마지막 매개 변수)를 따르도록합니다."auth_bug

테스트는 해당 지역의 지점은 사용하여 해당 원격 지점에 작동하는지 dcommit--dry-run( -n) :

git svn dcommit -n

그리고 SVN 서버는 새로운 브랜치 이름으로 응답해야합니다 :

https://scm-server.com/svn/portal/branches/auth_bug에 커밋 ...


2
git co는 Jesper가 git alias를 설정했음을 의미합니다.
Jason Axelson

3
업데이트 및 교체 git cogit checkout예는 사람을 위해 일을 할 수 있도록
예스퍼 Rønn - 젠슨

5
나는 이미이 답변에 투표했지만 몇 번이고 다시 돌아 오는지 모른다. 감사합니다!
Ben Doerr

35
git-svn branch명령 에는 까다로운 부분 이 있습니다. 이런 방식으로 새 분기를 만들려면 온라인 상태 여야합니다. 오프라인에서 다음을 수행 할 수 있습니다. 1. git checkout -b foobarhack-hack-hack 3 git commit -m "Done foobar".. 그리고 온라인 1. 수행하여이 변경을 누르면 git svn branch foobar2. git branch --set-upstream foobar remotes/foobar3. git svn dcommit.
vadishev

2
따라서 2 단계를로 바꿉니다 git checkout -b foobar-new remotes/foobar. 3. git checkout foobar4. git rebase foobar-new5. 확인 분기 이제 SVN 브랜치에 커밋하기 위해 테스트합니다. git svn dcommit --dry-run6. 마지막으로 실제로 커밋 git svn dcommit7. 제거 임시 지점git branch -D foobar-new
jjcf89

64

git v1.6.1부터 git svn branch사용할 수 있습니다.

자식 문서에서 :

    분기
        SVN 저장소에 분기를 작성하십시오.

        -m, --message
            커밋 메시지를 지정할 수 있습니다.

        -t, --tag
            branches_subdir 대신 tags_subdir을 사용하여 태그를 작성하십시오.
            git svn init 중에 지정되었습니다.

이전 버전의 git은 svn 분기를 만드는 방법을 제공하지 않습니다.


4

@kch I just (2008 년 12 월 7 일) git의 v1.6.1-rc1 태그를 컴파일했으며 git svn branch 명령과 관련 문서가 포함되어 있습니다. 따라서 git v1.6.1 릴리스에는이 명령이 포함되어야합니다.


실제로, 나는 지금 1.6.1을 설치했고 명령을 사용할 수 있습니다. 이에 따라 내 대답을 업데이트했습니다.
kch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.