git-svn重命名跟踪分支

Gre*_*ind 22 git git-svn

我当前的svn克隆分支(使用-s'标准布局')选项被调用:

$ git branch -r
branch1
branch2
Run Code Online (Sandbox Code Playgroud)

我想重命名那些,以便它们是:

$ git branch -r
svn/branch1
svn/branch2  
Run Code Online (Sandbox Code Playgroud)

好像我最初调用了$ git-svn clone --prefix svn.我不需要更改远程端的任何名称.

Dan*_*ien 34

假设您没有添加的其他遥控器git remote add ...,请尝试以下过程:

  1. git gc将所有参考包装成.git/packed-refs.
  2. 打开.git/packed-refs进行编辑.将"refs/remotes /"替换为"refs/remotes/svn /".
  3. 打开.git/config进行编辑.你应该看到类似的东西:

    [svn-remote "svn"]
        url = SVN_REPO_URL
        fetch = trunk:refs/remotes/trunk
        branches = branches/*:refs/remotes/*
        tags = tags/*:refs/remotes/tags/*
    
    Run Code Online (Sandbox Code Playgroud)

    将"refs/remotes /"替换为"refs/remotes/svn /":

    [svn-remote "svn"]
        url = SVN_REPO_URL
        fetch = trunk:refs/remotes/svn/trunk
        branches = branches/*:refs/remotes/svn/*
        tags = tags/*:refs/remotes/svn/tags/*
    
    Run Code Online (Sandbox Code Playgroud)

    请务必同时更新任何远程跟踪分支.为此,您可以在整个文件中将"refs/remotes /"替换为"refs/remotes/svn /".

我用GNU Nano存储库的git-svn镜像副本测试了这个程序,它似乎有效.

编辑:我刚刚验证过这个程序不会搞砸git-svn dcommit或rebase操作.它就好像--prefix=svn/最初在git svn clone -s SVN_REPO_URL命令中指定的那样.

  • 我还必须将`.git/svn/refs/remotes/trunk`移动到`.git/svn/refs/remotes/svn/trunk` - 没有,我得到一个`open:没有这样的文件或目录在C:\在执行`git svn fetch`时,程序文件(x86)\ Git/libexec/git-core\git-svn行561`错误. (5认同)