我的团队正准备迁移到 Git,我们希望从一个小型存储库开始。 由于二进制文件和数百个版本分支,由 git-svn 创建的初始 Git 存储库大约有 10GB。
清除大文件很容易,棘手的部分似乎是分支的数量。
对于 git 迁移,我们希望在某个时间点 (X) 只有某些(最新的)分支开始。 我们没有“主干”——而是在较长时间段内维护的不同版本分支:
---- Version 1 ------------------------
\---------- Version 2--------------
\--------- Version 3----
我很容易发现如何从历史记录中清除大块(BFG、git filter-branch)。
我的问题:
我们如何才能从历史记录中删除除少数特定分支之外的所有分支,以便我们在新存储库中只有分支“版本 3”?理想情况下,我们希望历史从创建此分支的开始提交开始:
--------- Version 3----
有没有办法用 git filter-branch
或其他方法做到这一点?
最佳答案
我知道这已经晚了几年,但如果有人正在寻找答案以选择不涉及克隆整个事物的几个分支:
使用文件夹 tmp
中的 SVN URL 初始化 git 仓库
git svn init -T <main_branch_name> <repo_url> tmp
更新“.git/config”文件以仅克隆特定分支。
在这种情况下,我们将只克隆与模式 feature*
[svn-remote "svn"]
noMetadata = 1
url = <repo_url>
fetch = trunk:refs/remotes/origin/trunk
branches = branches/feature*:refs/remotes/origin/* ## Added line
现在你可以从SVN仓库中获取文件了
git svn fetch -r $NUMBER:HEAD
更多信息:
关于git - SVN 到 Git 迁移 : Only import certain branches and history,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26589394/