我正在使用一个存储库,其中有大量的文件,需要几个小时才能签出。我正在研究Git是否能很好地使用这种存储库的可能性,因为它支持稀疏签出,但我能找到的每个例子都是这样的:
git clone <path>
git config core.sparsecheckout true
echo <dir> > .git/info/sparse-checkout
git read-tree -m -u HEAD
这个命令序列的问题是原来的克隆也做一个签出。如果在原来的clone命令中添加了-n,则read-tree命令将导致以下错误:
错误:稀疏签出在工作目录上没有留下条目
如何在不先签出所有文件的情况下进行稀疏签出?
请注意,这个答案确实从存储库下载了数据的完整副本。git remote add -f命令将克隆整个存储库。从git-remote的手册页:
使用-f选项,在远程信息设置完成后立即运行git fetch <name>。
试试这个:
mkdir myrepo
cd myrepo
git init
git config core.sparseCheckout true
git remote add -f origin git://...
echo "path/within_repo/to/desired_subdir/*" > .git/info/sparse-checkout
git checkout [branchname] # ex: master
现在你会发现你有一个“修剪”签出,只有从路径/within_repo/到/desired_subdir的文件存在(并且在该路径中)。
注意,在windows命令行中,你不能引用路径,也就是说,你必须用这个命令来改变第6个命令:
echo path/within_repo/to/desired_subdir/* > .git/info/sparse-checkout
如果您不这样做,您将在稀疏签出文件中获得引号,并且它将不起作用
请注意,这个答案确实从存储库下载了数据的完整副本。git remote add -f命令将克隆整个存储库。从git-remote的手册页:
使用-f选项,在远程信息设置完成后立即运行git fetch <name>。
试试这个:
mkdir myrepo
cd myrepo
git init
git config core.sparseCheckout true
git remote add -f origin git://...
echo "path/within_repo/to/desired_subdir/*" > .git/info/sparse-checkout
git checkout [branchname] # ex: master
现在你会发现你有一个“修剪”签出,只有从路径/within_repo/到/desired_subdir的文件存在(并且在该路径中)。
注意,在windows命令行中,你不能引用路径,也就是说,你必须用这个命令来改变第6个命令:
echo path/within_repo/to/desired_subdir/* > .git/info/sparse-checkout
如果您不这样做,您将在稀疏签出文件中获得引号,并且它将不起作用