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

Spo*_*ude 2 git bitbucket

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

seh*_*ehe 6

编辑稀疏检查基本上可以这样但更好(参见链接问题).只是,我的回答是做一个浅层克隆以及只进行稀疏结账.

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

  1. 结帐浅拷贝

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

    mkdir /tmp/workdir
    cd /tmp/workdir
    git init .
    
    # add the shallow clone as a remote
    git remote add --fetch shallow /tmp/project.git
    
    Run Code Online (Sandbox Code Playgroud)
  3. 真正的黑客:

    # read a subtree from the remote, shallow branch
    git read-tree --prefix somedir -u shallow/master:testcases/
    
    Run Code Online (Sandbox Code Playgroud)

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

你最终会得到一个工作目录,其中只包含testcases/一个名为的子目录中的文件somedir

结果:

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