将单个SVN标记迁移到Git

将单个SVN标记迁移到Git,git,svn,git-svn,Git,Svn,Git Svn,我正在尝试将特定标记从SVN迁移到Git 我已将标签克隆到我的本地服务器 git svn clone --authors-file=authors.txt svn://path/tags/1.0.0 1.0.0 已运行获取以与远程repo同步 git fetch 现在,我想将标记推送到远程git,它应该在git中创建一个标记。我已为此执行以下命令 git push origin --tags 上面写着“一切都是最新的”。但是,它没有向Git添加任何标记。当然没有添加任何标记。您将该标记克隆

我正在尝试将特定标记从SVN迁移到Git

我已将标签克隆到我的本地服务器

git svn clone --authors-file=authors.txt svn://path/tags/1.0.0 1.0.0
已运行获取以与远程repo同步

git fetch
现在,我想将标记推送到远程git,它应该在git中创建一个标记。我已为此执行以下命令

git push origin --tags

上面写着“一切都是最新的”。但是,它没有向Git添加任何标记。

当然没有添加任何标记。您将该标记克隆为名为1.0.0的新存储库的主存储库。如果您想将结果作为Git标记推送,那么首先必须使用1.0.0标记它

但是除此之外,
gitsvn
不是一个适合一次性转换存储库或存储库部件的工具。如果您想将Git用作现有SVN服务器的前端,那么它是一个很好的工具,但是对于一次性转换,您应该不要使用
Git SVN
,而是
svn2git
,它更适合此用例

有很多工具称为
svn2git
,最好的工具可能是来自的KDE工具。我强烈建议使用
svn2git
工具。这是我所知道的最好的一款,它的规则文件非常灵活

如果您不是100%了解存储库的历史记录,
svneverever
from是在将SVN存储库迁移到Git时调查其历史记录的一个很好的工具


您可以使用其规则文件轻松地配置该工具,使其完全符合您的需要,即使它只是将一个标记正确地转换为Git。您甚至可以通过一次运行轻松地将一个SVN回购拆分为多个Git回购,或将一个SVN根目录中的多个SVN回购合并为一个Git回购,或拆分为多个Git回购。

使用Git SVN进行一次转换没有什么错-即使是专业Git书籍也推荐:@1615903我不太在乎一本书讲什么,如果经验告诉我们一个完全不同的故事。嗯,
git svn
一开始就比较容易,但是它会产生更糟糕的结果,
svn2git
可以更好地重建历史(如果使用正确的),标记是真实的标记,而不是git中的分支,如果您在svn中更改布局,您可以使用
svn2git
轻松地配置它,使用
git svn
您最终将丢失历史记录,使用
svn2git
您还可以轻松地将一个svn存储库拆分为多个git存储库,或者将同一svn根目录中的多个svn存储库合并为一个git。。。。。。易于存储。另一个原因是,使用
git svn
时,标记包含一个额外的空提交,这也使得它们不是分支的一部分,因此在您将
--tags
赋给命令之前,正常的获取不会获取它们,因为默认情况下,也只获取指向获取的分支的标记。使用适当的
svn2git
标记就是它们所属的位置。使用正确的
svn2git
比使用
git svn
的转换速度快数百万倍。。。有很多原因导致
git svn
更差,KDE
svn2git
更优越……这一切都很好,但只是毫无理由地明目张胆地说它不是正确的工具似乎很奇怪,特别是当很多关于Git的讨论中经常提到的ProGit书籍推荐它时,现在你有了一些理由,可能还有更多的理由。也许它是在svn2git存在之前写的,或者这本书的作者只是决定写一个更容易使用的解决方案,即使它会产生更糟糕的结果。