我正在尝试从svn迁移到git . 我尝试使用以下工具这样做
git-svn
svn2git
但是,这两个工具只创建了一个 .git
文件夹,没有签出文件和文件夹(说工作副本) .
使用 git-svn
我尝试执行以下操作
git svn clone REMOTE_SVN_REPO
svn2git REMOTE_SVN_REPO
我究竟做错了什么?
附:我尝试使用Google搜索,但所有博客声称这两个命令都应该创建一个包含所有文件和文件夹的本地存储库 . 一旦我使用hg convert将svn项目转换为mercurial项目 . 在将svn项目转换为mercurial项目之后,我已经完成了hg up或类似的项目,它带来了项目的所有文件和文件夹,我可以轻松地将该项目推送到mercurial服务器 . 这里我只有一个.git文件夹 . 我错过了什么步骤或者我到底做错了什么?
1 回答
好吧,
git svn
是远程SVN存储库的git后端 . 您可以将其视为双向代理 - 在内部它模拟SVN命令并允许其用户使用给定的SVN存储库,就像它是GIT存储库一样 . 对于世界其他地方,用户仍然使用SVN,在这种情况下,GIT仅用作SVN上的方便包装器 .因此,使用
git-svn
,您可以在.git
文件夹中获取SVN存储库中所有提交的个人镜像(或者只是部分提交,如果您选择了一些提交-r
选项或选择了一些分支) . 您可以使用gitk --all
命令检查整组导入的提交,并使用git checkout
检查选定的提交,或者只需使用RMB点击gitk中的提交并选择相应的菜单项 .现在,您应该首先在本地提交更改(就像使用普通的GIT存储库一样),然后使用
git svn dcommit
将更改推送回SVN存储库 . 在推送到SVN repo期间,提交将是"re-played",好像这是由通常的SVN客户端完成的 . 与通常的SVN提交一样,可能存在冲突和其他类似问题 . 使用git svn fetch
,git svn rebase
和git svn --help
页面中描述的其他命令来修改对更新树的更改并解决冲突另一方面,
svn2git
是一种将现有本地SVN存储库(即SVN提交数据库的内容)转换为本地GIT存储库的方法 . 通常,当整个团队或公司决定从SVN完全迁移到GIT时,执行此步骤一次 . 在转换之后,您将真正获得GIT的所有好处(复杂的分支和合并,用于代码审查的精简GIT特定系统*等)