2013-02-21 37 views
0

最近我使用git-svn从SVN迁移到GIT。git如何将特定的子文件夹标记为分支

检出代码的实际大小为〜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

不幸的是,Git并不喜欢这个工作,因为它是一个distributed version control system (DVCS)。这意味着你有一个完整的代码副本,而不仅仅是它的一部分。

但是,有可能做所谓的shallow clone。例如:

git clone <repo> --depth 1 

这种做法带有各种警告 - 你可以找到很多的更多讨论here

最终,24GB对于git仓库来说是非常大的。事实上,我从来没有听说过这么大的仓库。使用filter branch命令试图大幅度减小它的大小可能是值得研究的。

我已经写了Ruby gem - 这仍然是处于早期开发阶段 - 它提供了有关的Git仓库的一些基本统计信息,如大文件到您的纪录(而不再在你working copy)可能对使用filter branch去除合适人选。

另一种选择可能是将您的单个存储库拆分为多个存储库。我不能强烈推荐这个,因为我不知道你的代码如何组合在一起,但有a great discussion here

+0

是的,它是非常大的回购。 “浅克隆”不能满足我的要求,因为我不能忽视任何历史或文件深度。我想到将项目拆分成不同的回购协议,但需要付出巨大的努力和改变。现在我的目标是能够“检出多个子树,推拉变化”。 – rohit 2013-02-21 13:19:00

相关问题