最近我使用git-svn
从SVN迁移到GIT。
checkeded out代码的实际大小约为24GB。
在GIT中,目前我只看到一次分支为origin/master
。因此,如果每个开发人员克隆主人,他需要每次拉24GB,这真的很痛苦。
因此,我需要将一些现有位置标记为分支,以便可以直接检出这些位置,而不是完整的回购。
项目回购结构如:
/Docs/
/project-maintainance/
/main-project/
/module1
/branch1
/branch2
/module2
/branch1
/branch2
/branch3
现在,要完成此任务,我想将某些特定文件夹标记为分支,而不是创建新分支。我浏览了这么多网页,但只是因为我是初学者而增加了我的困惑。
如何从子文件夹而不是顶级文件夹创建分支?
编辑:现在我的目标是能够checkout multiple subtrees, push and pull changes.
答案 0 :(得分:0)
不幸的是,git不是这样的,因为它是distributed version control system (DVCS)。这意味着您拥有代码的完整副本,而不仅仅是其中的一部分。
但是,可以执行所谓的shallow clone
。例如:
git clone <repo> --depth 1
这种方法有各种警告 - 你可以找到更多的讨论here。
最终,24GB对于git repo来说非常大。事实上,我以前从未听说过如此庞大的存储库。可能值得研究尝试使用filter branch
命令大幅减小它的大小。
我写了一个Ruby gem - 它仍处于早期开发阶段 - 它提供了一些关于git存储库的基本统计信息,例如历史记录中的大文件(不再是working copy
中的大文件)适合使用filter branch
删除的候选人。
另一种选择可能是将您的单个存储库拆分为多个存储库。我不强烈推荐这个,因为我不知道你的代码如何组合在一起,但有a great discussion here。