问题标签 [sparse-checkout]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
917 浏览

linux - git sparse-checkout 忽略特定文件类型

我有一个 git 存储库,里面有一堆大的 csv,我不想克隆,所以我遇到了 git sparse-checkout 和这篇文章:https ://github.blog/2020-01-17-bring -your-monorepo-down-to-size-with-sparse-checkout/

从这篇文章中,我采取了以下措施:

然后我编辑.git/info/sparse-checkout并添加以下内容(改编自上面页面中的示例):

但它似乎不能正常工作。一些文件夹被克隆后git pull,有些则没有。我还注意到一个警告,当git sparse-checkout list我收到:

仅忽略某种文件类型的正确方法是什么?

0 投票
2 回答
770 浏览

git - Gitlab CI 和 Git 部分克隆

我正在一个大型 monorepo 上测试 git 部分克隆功能。开发人员可能会在他的机器上运行以下命令:

这似乎运作良好,我现在正试图在 Gitlab 中启动并运行 CI。如果我在我的.gitlab-ci.yml文件中使用默认设置,Gitlab 会克隆整个 monorepo,这需要很长时间。

Gitlab 最近添加了对部分克隆的实验性支持,但是 Gitlab-CI 中是否有任何支持?我唯一的选择是使用上面的命令GIT_STRATEGY: none然后手动克隆所有内容吗?before_script

0 投票
1 回答
475 浏览

git - 稀疏结帐在工作目录上没有留下任何条目

我试图使用稀疏结帐选项来减少我的 Jenkins 管道中的结帐大小。它工作了一段时间,然后当我对脚本进行小修改(不在结帐部分)时,我开始收到此错误

Git 存储库中有文件夹 LINUX。我在参数中使用提交 ID 8c544c33e438965f97039bceb885940023e20257 在此处输入图像描述

我收到以下错误:

然后我删除了稀疏结帐扩展

詹金斯管道之后:

我仍然收到与稀疏结帐相关的错误

如果我在这里遗漏了什么,请告诉我。谢谢!

0 投票
1 回答
52 浏览

git - git v28.0.0 中的稀疏结帐?

在 git 26.0.2 我能够执行这些步骤:

这以 worktree 中的一个目录很好地结束: 在此处输入图像描述

与 git 27.0.0 完全相同的步骤,以空工作树结束。

我的问题是:这些步骤是否有意义并且应该与 git 28 一起使用,否则我做错了。

谢谢波阿斯

0 投票
2 回答
468 浏览

git - Jenkins git checkout - 将 .git 文件夹放在另一个地方

我们使用 Jenkins 通过几个 git repos 的 VPN 部署到客户端服务器上的客户端文件夹。我已经设置了“签出到子目录选项”和“稀疏签出”。

我们只需要部署一个公共存储库的一些文件(其他文件是私有的)。但是如果.git文件夹在里面,查看其他文件就不难了。

对于 git,可以将 .git 文件放入 repo 文件夹并在此文件中指定 .git 文件夹的位置,例如:

在此处查看有关 gitdir 的更多信息)

是否可以像上面那样为 git Jenkins 插件设置 .git 文件夹的另一个位置?

更新。这是上述的部署配置: 部署配置(稀疏结帐)

0 投票
16 回答
71787 浏览

git - github/git Checkout 在 Windows 上返回“错误:无效路径”

当我尝试从 github 签出存储库时,出现错误:

我怀疑问题是路径包含 : 在 Windows 上是非法的。

在研究了错误之后,我发现了 2 个可能的答案:
1)更改存储库文件的路径。 不幸的是,这是一个团队资源,在可预见的将来无法修复。
2)使用稀疏结帐。 我试过这个没有效果,如下所示:

$ git clone -n​​ git@github.com:XXXXXX/deploy.git
克隆到'deploy'...
远程:枚举对象:57,完成。
远程:计数对象:100% (57/57),完成。
远程:压缩对象:100% (49/49),完成。
远程:总计 86457(增量 10),重用 22(增量 8),打包重用 86400
接收对象:100%(86457/86457),1.50 GiB | 4.73 MiB/s,完成。
解决增量:100% (59779/59779),完成。
$ cd deploy/
$ git config core.sparsecheckout true
$ echo www >> .git/info/sparse-checkout
$ git checkout centos6
error: invalid path 'configs/perl-modules/DIST.64/perl-HTML-Tree-1 :5.03-1.el6.noarch.rpm'
错误:路径无效 'configs/perlbrew/perls/perl-5.24.1/man/man3/App::Cpan.3'

. (对许多文件重复)

这是使用 Git for Windows “git version 2.28.0.windows.1”完成的。我还尝试了两种类型的行尾并使用各种版本的 .git/info/sparse-checkout 例如:

Checkout 在 Linux、MacOS 和 WSL 上运行良好,唯一的问题是我的 IDE 不能在那里工作。为什么 sparse-checkout 不能在 Windows 上运行。还有其他可能吗?

0 投票
2 回答
395 浏览

git - 如何在不下载其父文件夹的情况下签出或克隆文件夹

我只想从 gitlab 中检出一个文件夹,而没有它的父文件夹和层次结构中的其他父文件夹。
我们的 gitlab 存储库结构是这样的hybris/bin/custom/asamp。还有其他与asamp文件夹平行的文件夹。我只想签出 asamp文件夹
我一直在尝试此链接上给出的解决方案 -如何仅克隆 Git 存储库的子目录?但我无法仅下载asamp文件夹,它还下载完整的层次结构,即我可以hybris/bin/custom/asamp在本地存储库中看到。请注意,其他文件夹是asamp的同级文件夹当我进行稀疏检出时没有下载,但是我不想要完整的层次结构被检出。我只想下载asamp文件夹而不是其父文件夹。
我正在使用 gitlab。

0 投票
1 回答
48 浏览

git - 撤消 git checkout .. 稍作改动

首先,让我澄清一件事:尽管有很多关于撤消 git checkout 的问题,但这不是(至少据我评估)一个重复的问题。

现在让我解释一下我的用例:我正在使用 sparse-checkout 功能来拥有一个工作副本,其中不包含中央远程仓库中的所有文件。

现在假设我想将一个文件添加到我的工作副本中,但我犯了一个错误并签出了错误的文件。

我想恢复我的工作副本,就好像该文件从未签出一样。

那就是:我想从我的工作副本中删除该文件,但我希望从远程仓库中删除该文件。我一直在到处寻找,但仍然没有找到一种方法来做我想做的事。

0 投票
1 回答
219 浏览

git - 稀疏结帐但排除或忽略根目录中的文件?

状态的文档git sparse-checkout

默认情况下,运行 git sparse-checkout init 时,会将根目录添加为父模式。此时,sparse-checkout 文件包含以下模式:

但是,我不想在sparse-checkout我想要的东西中包含根,

但这不起作用,而是返回

警告:无法识别的模式:/*

警告:禁用锥形模式匹配

这样 sparse-checkout 只提取顶部的一个目录,而不是存储库的 root 中的文件。我怎样才能做到这一点?

0 投票
0 回答
246 浏览

git - 可以将稀疏结帐模式添加到 .gitmodules 中吗?

假设我有一个git submodule并且我想在它上面启用稀疏结帐。是否可以这样做并将该文件添加到克隆的其他人的存储库中?git 子模块被添加到,/.gitmodules但该子模块的稀疏签出文件在.git/modules/foo/info/sparse-checkout? 如何配置 git 子模块,以便当其他人克隆时,--recursive他们只能获得白名单目录?如何将子模块上的 sparse-checkout 配置保存到 repo 中?