Menurut dokumentasi pada progit: http://git-scm.com/book/zh/v2/Git-与其他系统-迁移到-Git
Menghadapi dua masalah:
Untuk menukar teg kepada teg Git yang betul, jalankan
$ cp -Rf .git/refs/remotes/origin/tags/* .git/refs/tags/ $ rm -Rf .git/refs/remotes/origin/tags
Ini akan menukar rujukan cawangan jauh yang asalnya dalam alat kawalan jauh/asal/tag/ menjadi tag sebenar (ringan).
Seterusnya, alihkan rujukan yang tinggal di bawah rujukan/jarak jauh ke cawangan tempatan:$ cp -Rf .git/refs/remotes/* .git/refs/heads/ $ rm -Rf .git/refs/remotes
.git/refs/remotes Kini semua cawangan lama ialah cawangan Git sebenar, dan semua teg lama ialah teg Git sebenar.
Perkara terakhir yang perlu dilakukan ialah menambah pelayan Git baharu anda sebagai repositori jauh dan menolaknya.
Tetapi apabila melaksanakan cp, didapati bahawa direktori ini tidak wujud git branch -r menyenaraikan banyak yang asal
$git branch -r
origin/v1.1
origin/tags/v1.1.2
origin/tags/v1.1.2@438
origin/tags/v1.2.1
origin/tags/v1.2.1@474
origin/tags/v1.2.3
origin/trunk
Walau bagaimanapun, tiada fail di bawah .git/refs/remotes/origin/tags
Rujukanhttp://nowing.iteye.com/blog/844608的做法,使用标准命令将branch转成tags
$ git tag tagname tags/tagname ----用指定的分支创建一个Git标签
$ git branch -r -d tags/tagname ----删除指定的远程分支
Akhir sekali, gunakan git push origin --all
untuk menolak ke pelayan git, tetapi hanya terdapat batang dan tiada cawangan
Gunakan git push origin master --tags
untuk mempunyai batang dan tag, tetapi tiada cawangan
Setelah bergelut untuk masa yang lama, saya akhirnya menyelesaikannya dengan svn2git
Idea asasnya ialah menukar cawangan terpencil kepada cawangan tempatan, dan kemudian menolak
svn2git boleh menyelesaikannya terus