我有一个SVN存储库,看起来像这样:
我跑:
git svn clone --stdlayout https://[SVN URL]/svn/MyProject "C:\_build\WorkingFolders\Myproject_gitcopy"
该命令似乎成功执行。
我希望在克隆目录中看到“branches”,“tags”和“trunk”文件夹,因为我们克隆了整个存储库。相反,我看到“普通”,“doc”,“extlib”和“proj”。
看来git只克隆了我的存储库的主干。有谁知道为什么会这样,以及如何解决它?或者我只是错误地看到它?
提前感谢您的帮助!
答案 0 :(得分:4)
实际上,git svn
正试图通过聪明来帮助你: - )。
git以不同于Subversion的方式处理标记和分支。在Subversion中,标签和分支不作为单独的技术概念存在;它们只是特殊目录下树的副本。
git实际上将分支作为“真实”对象。因此,git svn会自动将Subversion分支和标记转换为git branches(*)。
要在git中查看分支,请执行
git branch -a
( - a使它包括远程跟踪分支)。这应该显示SVN repo的分支和标签。
(*)注意:git svn不会从Subversion标签创建git标签,因为在Subversion中,标签和分支之间在技术上没有区别(它只是一种约定)。由于尚不完全清楚如何区分标签和Subversion中的分支,git svn只是将它们全部作为分支导入。参见例如Debian bug #501761: git-svn --tags should at least /try/ to handle tags as tags
答案 1 :(得分:2)
在Git中,你没有像trunk,tags和branches这样的目录结构。通常你会在git的master分支中看到SVN-trunk中的所有内容但是根据你提到的信息,你提到Subversion中根本没有标签或分支,你也不会在Git中看到标签或分支
此外,基于--stdlayout选项,您告诉git-svn bridge假设默认布局为不同的主干,标签和分支。
答案 2 :(得分:0)
一旦启动了一些svn分支(如git branch -a所示),您可以通过
切换工作区git checkout <abranchname>
并返回
git checkout master