我使用git作为scm的选择,但必须使用svn-repo。我可以像这样创建一个svn-remote-branch:
git svn branch the_branch
但是我如何删除远程分支?
答案 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
)
如其他答案所述,手动步骤如下:
git log -1 $commit
git-svn-id: $url
行svn rm $url
我创建了一个别名来自动执行这些步骤:
[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"