我需要从Bitbucket Git repo中检出单个文件夹

时间:2013-12-21 22:17:43

标签: git bitbucket

我有一个包含大约20个文件夹的repo,当我从SVN转换为Git时创建。是否可以从Git存储库(在Bitbucket上)签出单个文件夹?或者我是否必须将这些文件夹中的每一个作为单独的回购?

1 个答案:

答案 0 :(得分:6)

编辑稀疏结账基本上可以这样但更好(参见相关问题)。只是,我的回答是做一个克隆 以及 ,只做稀疏结账。

你可以用两个(好的,粗略的)步骤来破解它:

  1. 签出浅拷贝

    cd /tmp
    git clone --depth=1 --bare git@myhosted_repo/project.git
    
    (cd project.git && git branch master)
    
  2. 现在 - 设置您的工作树(单独)

    mkdir /tmp/workdir
    cd /tmp/workdir
    git init .
    
    # add the shallow clone as a remote
    git remote add --fetch shallow /tmp/project.git
    
  3. 真正的黑客:

    # read a subtree from the remote, shallow branch
    git read-tree --prefix somedir -u shallow/master:testcases/
    

    (假设您的repo有一个名为testcases的目录)

  4. 您最终会得到一个工作目录,其中只包含名为testcases/

    的子目录中somedir的文件

    结果:

    • 它只能从托管仓库获得一个修订版。良好(TM)
    • 它只检查该修订版中的单个子文件夹。良好(TM)
    • 这是神秘的。如果你打算将somedir放在其他一些回购中,它会工作得特别糟糕(可以完成子树合并,但我不会把手指烧在那里)。