这个问题可能是因为我不明白分支在SVN和Git技术上是如何工作的.
但是当我使用svn2git时,一些分支在refs/remotes /中,而有些则不是.例如trunk是/ refs/remotes/trunk.
当我检查新git仓库中的主分支时,它不是svn trunk而是去年的一些旧分支(看起来它是完全随机选择的).标签移动正确.
如果我在Trac中查看svn repo,看起来布局是正确的(主干,分支,标签),并且主干指向它应该的位置.它看起来像正确显示的分支(没有遥控器)在.git/config中,其余的不是.
这里发生了什么,我该怎么做才能正确转换svn repo?我是否应该将远程分支的定义添加到.git/config中?然而,这不能解决主干问题.
编辑:我刚刚意识到:tel遥控器与本地分支完全相同,区别在于有一个本地分支"master"和远程分支"remotes/trunk",所有其他19个分支看起来相似.问题似乎是master没有指向"remotes/trunk"而是指向一些随机提交.
这只是svn2git中的一个错误吗?
这一定是一个错误。根据 git2svn 的 github 中的自述文件
并且签入 master 的代码最终会成为您 svn 主干中当前的代码,而不是您上次提交所在的 svn 分支中的代码。
您可以尝试手动指定分支,看看是否会获得更一致的结果
 svn2git http://svn.example.com/path/to/repo --trunk trunk --tags tags --branches branches
如果这不起作用,您可以在 .gitconfig 文件中添加一个别名,您可以在 svn2git 之后运行该文件,它将用 trunk 替换 master
[alias]
  fixport = !sh -c 'git checkout remotes/trunk trunk && git checkout master && git reset --hard trunk'
然后你像平常一样做你的 svn2git ... ,完成后运行 git fixport ,它将检出遥控器/主干的本地副本作为主干,并将 master 重置为等于该副本。