我的任务是将一个项目从SVN转移到Git,我遵循了中的教程https://git-scm.com/book/it/v2/Git-and-Other-Systems-Migrating-to-Git.好的一点是:它奏效了!可悲的是,当涉及到移动标签和分支的远程引用时,本教程似乎已经过时了。
教程指出,它们存储在中
.git/refs/remotes/origin/tags/*
但是,在我的svn克隆中,这个目录是空的。它们似乎存储在中
.git/svn/refs/remotes/origin/tags/*
分支机构也是如此,我希望它们在中
.git/refs/remotes/
但在中发现了它们
.git/svn/refs/remotes/
所以,我现在要问你的问题是:遵循教程,但用我发现的路径替换相应的路径是否安全?
编辑1:
假设它确实是安全的,我将引用复制到它们的新目的地。不幸的是,这对我不起作用:
$ git tag --list
$
尽管如此,文件夹.git/ref/tags/
并不是空的。在那里我发现了带有以下文件的标签命名文件夹:
-rw-r--r-- 1 delo 1049089 96 Nov 12 10:00 .rev_map.9585454d-0aa9-4b53-3453-ca0f383a6637
-rw-r--r-- 1 delo 1049089 247K Nov 12 10:00 index
-rw-r--r-- 1 delo 1049089 24 Nov 12 10:00 unhandled.log
分支机构也是如此。我认为,这不是它应该是什么…
我该怎么解决?
我认为它非常安全。请注意,您总是可以在移动它们之前创建一个备份。
另一种方法是使用本教程中的步骤。
基本上,你可以做:
for tag in `git branch -r | grep "tags/" | sed 's/ tags///'`; do
git tag -a -m"Converting SVN tags" $tag refs/remotes/$tag
done