git svn重命名跟踪分支

git svn重命名跟踪分支,git,git-svn,Git,Git Svn,我当前的svn克隆分支(使用-s“标准布局”)选项称为: $ git branch -r branch1 branch2 我想重新命名它们,以便它们是: $ git branch -r svn/branch1 svn/branch2 好像我调用了$git svn clone——最初是前缀svn。我不需要更改远程端的任何名称。假设您没有使用git remote add…添加的其他远程设备,请尝试以下步骤: git-gc将所有引用打包到.git/packed-refs 打开.git/pack

我当前的svn克隆分支(使用-s“标准布局”)选项称为:

$ git branch -r
branch1
branch2
我想重新命名它们,以便它们是:

$ git branch -r
svn/branch1
svn/branch2  

好像我调用了$git svn clone——最初是前缀svn。我不需要更改远程端的任何名称。

假设您没有使用
git remote add…
添加的其他远程设备,请尝试以下步骤:

  • git-gc
    将所有引用打包到
    .git/packed-refs
  • 打开
    .git/packed refs
    进行编辑。将“refs/remotes/”替换为“refs/remotes/svn/”
  • 打开
    .git/config
    进行编辑。您应该看到如下内容:

    [svn-remote "svn"]
        url = SVN_REPO_URL
        fetch = trunk:refs/remotes/trunk
        branches = branches/*:refs/remotes/*
        tags = tags/*:refs/remotes/tags/*
    
    将“refs/remotes/”替换为“refs/remotes/svn/”:

    确保还更新任何远程跟踪分支。要做到这一点,只需将整个文件中的“refs/remotes/”替换为“refs/remotes/svn/”

  • 我用GNU Nano存储库的git svn镜像副本测试了这个过程,它似乎可以工作


    编辑:我刚刚验证了此过程不会扰乱git svn dcommit或rebase操作。这就好像
    --prefix=svn/
    最初是在
    git svn clone-s svn\u REPO\u URL
    命令中指定的。

    谢谢,这很全面!我还必须将
    .git/svn/refs/remotes/trunk
    移动到
    .git/svn/refs/remotes/svn/trunk
    -没有,我打开了一个
    文件:在C:\Program Files(x86)\git/libexec/git core\git svn第561行
    执行
    git svn fetch
    时出错。对于较新版本的git svn,默认前缀是“origin/”如果在init或clone命令中未指定。我还注意到.git/info/refs中也有对“refs/remotes/origin”的引用。大概这些也需要重命名为“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/*