我有一个包含大约20个文件夹的repo,当我从SVN转换为Git时创建。是否可以从Git存储库(在Bitbucket上)签出单个文件夹?或者我是否必须将这些文件夹中的每一个作为单独的回购?
答案 0 :(得分:6)
编辑稀疏结账基本上可以这样但更好(参见相关问题)。只是,我的回答是做一个浅克隆 以及 ,只做稀疏结账。
你可以用两个(好的,粗略的)步骤来破解它:
签出浅拷贝
cd /tmp
git clone --depth=1 --bare git@myhosted_repo/project.git
(cd project.git && git branch master)
现在 - 设置您的工作树(单独)
mkdir /tmp/workdir
cd /tmp/workdir
git init .
# add the shallow clone as a remote
git remote add --fetch shallow /tmp/project.git
真正的黑客:
# read a subtree from the remote, shallow branch
git read-tree --prefix somedir -u shallow/master:testcases/
(假设您的repo有一个名为testcases
的目录)
您最终会得到一个工作目录,其中只包含名为testcases/
somedir
的文件
结果:
somedir
放在其他一些回购中,它会工作得特别糟糕(可以完成子树合并,但我不会把手指烧在那里)。