通过git删除svn-Branch?

时间:2009-12-03 12:30:32

标签: git git-svn

我使用git作为scm的选择,但必须使用svn-repo。我可以像这样创建一个svn-remote-branch:

git svn branch the_branch

但是我如何删除远程分支?

4 个答案:

答案 0 :(得分:82)

目前,无法使用git-svn删除SVN分支。但是使用SVN很容易删除分支,甚至不用检查它。所以只需输入

即可
svn rm $URL/branches/the_branch

请注意,删除Subversion分支不会导致它从git-svn存储库中删除。 (这是故意的,因为删除Subversion分支不会导致任何信息丢失,而删除git分支会导致在下一个git垃圾收集后忘记它的存在。)所以如果你想从你的git中删除远程SVN分支存储库,你必须手动完成:

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

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

要删除与Subversion标记对应的git分支,命令略有不同:

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

答案 1 :(得分:6)

这对我很有用,谢谢。不确定我的环境是不同的还是在最新版本的git中更改了,但是svn分支dirs位于.git / svn / refs / remotes /中,这很简单,可以从原始说明中找到,更改rm命令:

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

不确定标签,因为我不使用这些标签。

答案 2 :(得分:2)

Opps,最佳答案是在2009年写的,现在删除远程标签的正确方法是

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

答案 3 :(得分:0)

截至2017年,我们仍然没有git svn branch --delete。 (-d选项在那里,但它是for mystic --destination

如其他答案所述,手动步骤如下:

  1. 打印提交消息:git log -1 $commit
  2. 在提交消息中,找到git-svn-id: $url
  3. 删除SVN分支:svn rm $url
  4. 我创建了一个别名来自动执行这些步骤:

    [alias]
        svn-rm-branch = "!f() { if git_svn_id=\"$(git log -1 --format=%B \"$@\" | 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 \"$@\")\" 1>&2; fi }; f"