我有一个包含大约20个文件夹的repo,当我从SVN转换为Git时创建.是否可以从Git存储库(在Bitbucket上)签出单个文件夹?或者我必须将每个文件夹作为单独的回购?
编辑稀疏检查基本上可以这样但更好(参见链接问题).只是,我的回答是做一个浅层克隆以及只进行稀疏结账.
你可以用两个(好的,粗略的)步骤来破解它:
结帐浅拷贝
cd /tmp
git clone --depth=1 --bare git@myhosted_repo/project.git
(cd project.git && git branch master)
Run Code Online (Sandbox Code Playgroud)现在 - 设置你的工作树(单独)
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)真正的黑客:
# 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
结果:
somedir一些其他的回购,它会工作特别糟糕(可以完成子树合并,但我不会把手指烧在那里)