web-dev-qa-db-ja.com

git経由でsvn-Branchを削除しますか?

選択したscmとしてgitを使用していますが、svn-repoを使用する必要があります。次のようにsvn-remote-branchを作成できます。

git svn branch the_branch

しかし、どうすればリモートブランチを削除できますか?

61
DerKlops

現在、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
84
mhagger

これは私にはうまくいきました、ありがとう。私の環境がちょうど違うのか、これが最新バージョンのgitで変更されたのかはわかりませんが、svnブランチディレクトリは.git/svn/refs/remotes /にあり、元の指示から見つけるのに十分簡単で、 rmコマンド:

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

タグはあまり使わないのでよくわかりません。

6
Stephen C

Opps、トップの回答は2009年に書かれました。リモートタグを削除する正しい方法は次のとおりです。

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

2017年現在、git svn branch --deleteはまだありません。 (-dオプションはありますが mystic --destination の場合)

他の回答で説明されているように、手動の手順は次のとおりです。

  1. コミットメッセージを印刷:git log -1 $commit
  2. コミットメッセージでgit-svn-id: $url行を探します
  3. SVNブランチを削除: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"
0
snipsnipsnip