2009-12-03 4 views

답변

78

현재 git-svn을 사용하여 SVN 분기를 삭제할 수 없습니다. 그러나 체크 아웃하지 않고도 SVN을 사용하여 브랜치를 삭제하는 것은 쉽습니다. 그래서 단순히

svn rm $URL/branches/the_branch 

는 서브 버전 분기를 삭제하면 그것이 자식 - svn을 저장소에서 삭제 될 수 없 사오니, 이용에 참고하여주십시오 입력합니다. (이것은 의도적인데, Subversion 브랜치를 삭제해도 정보가 손실되지 않는 반면 git 브랜치를 삭제하면 다음 git 가비지 콜렉션에 따라 그 존재를 잊어 버리게되기 때문입니다.) 그래서 원격 SVN 브랜치를 git에서 삭제하려면 저장소, 수동으로 할 필요가 :

git branch -D -r the_branch 
rm -rf .git/svn/the_branch 

OR 
rm -rf .git/svn/refs/remotes/f8745/ (for newer versions) 

가 서브 태그에 해당하는 자식 지점을 삭제하려면 명령은 약간 다릅니다 :

git branch -D -r tags/the_tag 
rm -rf .git/svn/tags/the_tag 
+1

Stephen C가 다른 답변에서 추측 한 것처럼 .git/svn의 트리 구조는 git-svn 구성 설정 방법에 따라 다릅니다. 즉, 가장 일반적인 구성의 경우 삭제할 올바른 하위 디렉토리를 찾아 내서는 안됩니다. – ipmcc

+1

'git gc'또는'git svn gc'는 사용자가 추측하지 않고 올바른 파일을 검색하고 삭제할 수 있습니까? –

+1

Ben : "rm -rf"명령은 브랜치에 대한 git-svn 메타 데이터를 삭제합니다. 이 정보는 "git gc"또는 "git svn gc"에 의해 정리되지 않습니다. – mhagger

6

이 감사, 나를 위해 잘 작동. 내 환경이 다르거 나 더 최신 버전의 자식에서 변경되었지만 svn 브랜치 디렉토리가 .git/svn/refs/remotes /에 있으며 원래 지침에서 찾을 수있을 정도로 단순하므로 rm 명령 :

rm -rf .git/svn/refs/remotes/the_branch 

태그를 많이 사용하지 않으므로 잘 모르겠습니다.

+0

로컬보기에서만 삭제합니다. SVN repo를 사용하는 다른 사용자는 여전히 그것을 볼 수 있습니다. – phyzome

+0

@phyzome, 이것은 svn 브랜치를 제거하는 방법을 보여주는 mhagger의 대답에 대한 부록입니다. 나는 네가 그렇게 downvoted 믿을 수 없어. –

+0

아, 이제 알겠습니다. 이것은 mhagger의 대답에 대한 주석이어야합니다. 그런데, 최상위 레벨 대답 대신에. – phyzome

2

OPPS, 상단 대답은 지금 2009 년에 원격 태그를 삭제하는 올바른 방법을 2017으로

svn rm svn://dev.in/branches/ios_20130709150855_39721/ 
git branch -d -r ios_20130709150855_39721 
+1

그것은 강제로 삭제하지 않는 -D 대신 -d를 사용하는 것 외에 다른 최상위 응답과 다릅니다. –

+0

@JeffSchumacher 그는 최근에 답변을 업데이트했습니다. – alswl

0

있다 썼다, 우리는 여전히 git svn branch --delete이 없습니다. (-d 옵션이 있지만 for mystic --destination입니다) 다른 답변에서 설명한 바와 같이

, 수동 단계는 다음과 같습니다, 커밋 메시지에서 git log -1 $commit

  • git-svn-id: $url 라인
  • 제거를 찾습니다

    1. 인쇄 메시지 커밋 SVN 지점 : svn rm $url

    다음 단계를 자동화하기 위해 별칭을 만들었습니다.

    [alias] 
        svn-rm-branch = "!f() { if git_svn_id=\"$(git log -1 --format=%B \"[email protected]\" | grep -o '^git-svn-id:[^@]*')\" ; then svn rm --editor-cmd=\"$(git var GIT_EDITOR)\" \"$(echo $git_svn_id | cut -d' ' -f 2)\" ; else echo No git-svn-id in the message of the commit \"$(git rev-parse \"[email protected]\")\" 1>&2; fi }; f" 
    
  • 관련 문제