D'après la documentation sur progit : http://git-scm.com/book/zh/v2/Git-与其他系统-迁移到-Git
J'ai rencontré deux problèmes :
Pour remplacer la balise par une balise Git appropriée, exécutez
$ cp -Rf .git/refs/remotes/origin/tags/* .git/refs/tags/ $ rm -Rf .git/refs/remotes/origin/tags
Cela transformera les références de branche distantes initialement dans remotes/origin/tags/ en de véritables balises (légères).
Ensuite, déplacez les références restantes sous refs/remotes vers les succursales locales :$ cp -Rf .git/refs/remotes/* .git/refs/heads/ $ rm -Rf .git/refs/remotes
.git/refs/remotes Désormais, toutes les anciennes branches sont de véritables branches Git, et toutes les anciennes balises sont de véritables balises Git.
La dernière chose à faire est d'ajouter votre nouveau serveur Git en tant que référentiel distant et d'y accéder.
Mais lors de l'exécution de cp, il a été constaté que ce répertoire n'existe pas. git branch -r répertorie de nombreux répertoires originaux
$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
Cependant, il n'y a pas de fichier sous .git/refs/remotes/origin/tags
Référencehttp://nowing.iteye.com/blog/844608的做法,使用标准命令将branch转成tags
$ git tag tagname tags/tagname ----用指定的分支创建一个Git标签
$ git branch -r -d tags/tagname ----删除指定的远程分支
Enfin, utilisez git push origin --all
pour pousser vers le serveur git, mais il n'y a que le tronc et pas de branches
Utilisez git push origin master --tags
pour avoir le tronc et les balises, mais il n'y a pas de branches
La dernière question vient, comment migrer la branche ?
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