git - 你能用 git svn 指定哪个 svn 分支吗?

标签 git version-control git-svn

我觉得我的问题有点类似于CaptainPicard's但差异很大,我觉得有必要问一下。

我有一个旧的 SVN 存储库,其中包含大约 7500 个修订版,而这 7500 个修订版中的一部分是一些非常大的 .fla 文件。这些 .fla 文件存在于许多已创建的分支中。因此,导入后我的 .git 目录非常大,如果我得到整个主干、所有分支和所有标签,大约有 3.5 GB。为了将其配对,我做了另一个 svn 克隆,只是我想使用的主干目录,但包括所有分支显然会 pull 下所有历史记录和对象。

所以我的问题是,有没有办法告诉 git 只获取某些分支。例如只获取以某个标识符开头的分支(例如 mybranch)?

为清楚起见更新:我知道我可以将 git svn init/clone 指向单个特定分支。我想要做的是将它指向一组分支。例如,不是匹配 branches/* 只有分支匹配 mybranchset*

最佳答案

git svn 命令中,您只能使用星号通配符来指定目录的所有成员 (directoryname/*) 而不是文件名变体 (fileprefix *)。如果修改 git svn 以使用 SVN 的新 merge 跟踪,这在未来可能会改变。

因为 Git 只存储指向每个分支的提交的指针(而不是相关文件的重复目录),正如匿名答案所说,一旦重新打包,您的 Git 存储库将大大缩小。不幸的是,Git 无法像存储文本文件提交那样存储 Flash 文件的变更集,因此它们在更改时会被复制。

我建议你使用

$ git gc --aggressive  

重新打包您的代码库。与 git repack 相比,它会删除重复项并进行更多优化。

关于git - 你能用 git svn 指定哪个 svn 分支吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/445500/

相关文章:

java - Git 忽略不排除我的 .project 文件

database - 软件版本和SQL数据库-完美方法

git - 将远程 SVN 存储库 fork 到 git

git删除本地文件但将文件保留在repo中

git - 从 bazaar 转换到 git 并同步它们的正确方法

version-control - 如何对构建工具和库进行版本控制?

具有选定或限制子模块列表的 Git 子模块 foreach

Git SVN 正在运行,rebase 现在挂起

git - 相当于 git-svn 的 "svn switch"?

Git 添加所有修改、删除和未跟踪的文件?