簡體   English   中英

通過git刪除svn-Branch?

[英]Delete a svn-Branch via git?

我使用git作為scm的首選,但必須使用svn-repo。 我可以像這樣創建一個svn-remote-branch:

git svn branch the_branch

但是我如何刪除遠程分支?

目前,無法使用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

這對我很有用,謝謝。 不確定我的環境是不同的還是在最新版本的git中更改了,但是svn分支dirs位於.git / svn / refs / remotes /中,這很簡單,可以從原始說明中找到,更改rm命令:

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

不確定標簽,因為我不使用那些。

Opps,最佳答案是在2009年寫的,現在刪除遠程標簽的正確方法是

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

截至2017年,我們仍然沒有git svn branch --delete -d選項在那里,但它是為了神秘 - --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"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM