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

时间:2018-10-24 13:34:07

标签: git svn git-svn

我正在尝试将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

1 个答案:

答案 0 :(得分:1)

可以添加

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

可以使其更漂亮,但可以完成工作并显示可以重命名分支。