根据progit上的文档操作的:http://git-scm.com/book/zh/v2/Git-%E4%B8%8E%E5%85%B6%E4%BB%96%E7%B3%BB%E7%BB%9F-%E8%BF%81%E7%A7%BB%E5%88%B0-Git
遇到两个问题:
为了将标签变为合适的 Git 标签,运行
$ cp -Rf .git/refs/remotes/origin/tags/* .git/refs/tags/ $ rm -Rf .git/refs/remotes/origin/tags
这会使原来在 remotes/origin/tags/ 里的远程分支引用变成真正的(轻量)标签。
接下来,将 refs/remotes 下剩余的引用移动为本地分支:$ cp -Rf .git/refs/remotes/* .git/refs/heads/ $ rm -Rf .git/refs/remotes
.git/refs/remotes 现在所有的旧分支都是真正的 Git 分支,并且所有的旧标签都是真正的 Git 标签。
最后一件要做的事情是,将你的新 Git 服务器添加为远程仓库并推送到上面。
但是执行cp的时候发现这个目录并不存在,git branch -r列出来很多原来的
$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
然而 .git/refs/remotes/origin/tags 下面并没有文件
参考http://nowing.iteye.com/blog/844608的做法,使用标准命令将branch转成tags
$ git tag tagname tags/tagname ----用指定的分支创建一个Git标签
$ git branch -r -d tags/tagname ----删除指定的远程分支
最后用git push origin --all
push到git服务器,但是只有主干,没有分支
用git push origin master --tags
有主干和tags,但是也没有分支
最后的最后问题来了,怎么把分支也迁移上去?
Après avoir longtemps lutté, je l'ai finalement résolu avec svn2git
L'idée de base est de convertir la branche distante en branche locale, puis de pousser
svn2git peut le résoudre directement