从 svn 转换为 git 后如何从分支名称中删除远程源

How to remove remote origin from branch name after converting from svn to git

我正在尝试将 svn 存储库转换为 git,并且我通过执行以下操作基本上完成了我需要的工作:

git svn init https://svn.server.com/repos/my_repo --stdlayout
git svn fetch

我还找到了一种将所有 SVN 分支转换为本地 Git 分支的方法:

for branch in `git branch -r | grep -v tags`; do
    git branch $branch $branch
done

但是,现在我遇到了如下所示的分支列表:

origin/1.3
origin/1.4
origin/1.5
origin/1.6
origin/1.7
origin/1.8
origin/2.0

我真正想要的是分支名称如下所示:

1.3
1.4
1.5
1.6
1.7
1.8
2.0

我已经尝试查看 git filter-branch,但我不确定这是否正是我想要的。我还尝试像这样更手动地指定我的布局:

git svn clone --trunk=/trunk --branches=/branches --tags=/tags https://svn.server.com/repos/my_repo

但这也不起作用。它在每个分支名称之前给了我相同的结果 origin/ 。我只是想知道是否可以更改这些分支名称而不必再次重新克隆整个存储库。

这是 运行 git branch -a 的输出:

git branch -a
* master
  origin/1.3
  origin/1.4
  origin/1.5
  origin/1.6
  origin/1.7
  origin/1.8
  origin/2.0

可以添加

git branch -m old_name new_name

进入循环,使 bash 脚本部分变为

for branch in `git branch -r | grep -v tags`; do
    new_branch=$(echo $branch | sed 's/origin\///')
    git branch $branch $branch
    git branch -m $branch $new_branch
done

它可以变得更漂亮,但它完成了工作并表明您可以重命名分支。