为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以在不首先签出整个存储库的情况下执行稀疏签出?

是否可以在不首先签出整个存储库的情况下执行稀疏签出?

Git
阿晨1998 2019-07-08 16:41:42
是否可以在不首先签出整个存储库的情况下执行稀疏签出?我正在使用一个存储库,其中包含大量的文件,需要花费几个小时的时间才能签出。由于Git支持稀疏签出,所以我正在研究Git是否能很好地与这种存储库一起工作的可能性,但我能找到的每个示例都做了以下工作:git clone <path> git config core.sparsecheckout true echo <dir> > .git/info/sparse-checkout git read-tree -m -u HEAD这个命令序列的问题是原始的克隆也做了一个签出。如果将-n添加到原始克隆命令中,那么读树命令将导致以下错误:错误:稀疏签出在工作目录上没有留下任何条目。如何在不先签出所有文件的情况下进行稀疏签出?
查看完整描述

3 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

请注意,此答案确实从存储库下载了数据的完整副本。这个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

现在,您将发现您有一个“剪枝”签出,其中只包含了PATH/INTERP_REPO/to/Equired_subdir(以及在该路径中)的文件。

请注意,在windows命令行中,您不能引用路径,即必须用此命令更改第6个命令:

echo path/within_repo/to/desired_subdir/* > .git/info/sparse-checkout

如果不这样做,就会在稀疏签出文件中得到引号,它将无法工作。


查看完整回答
反对 回复 2019-07-08
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

Git克隆人有一个选项(--no-checkout-n)做你想做的事。

在命令列表中,只需更改:

git clone <path>

对此:

git clone --no-checkout <path>

然后,您可以使用稀疏签出,如问题中所述。


查看完整回答
反对 回复 2019-07-08
?
aluckdog

TA贡献1847条经验 获得超7个赞

我有一个类似的用例,但我只想签出一个标签的提交并修剪目录。使用--depth 1使它变得非常稀疏,并能真正加快速度。

mkdir myrepo
cd myrepo
git init
git config core.sparseCheckout true
git remote add origin <url>  # Note: no -f option
echo "path/within_repo/to/subdir/" > .git/info/sparse-checkout
git fetch --depth 1 origin tag <tagname>
git checkout <tagname>


查看完整回答
反对 回复 2019-07-08
  • 3 回答
  • 0 关注
  • 517 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信