问题标签 [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 投票
0 回答
31 浏览

git - 减少 git 稀疏检出的范围

我有一个包含 3 个子文件夹的仓库:A、B、C

我在 sparse_checkout 中使用 A/ 和 B/ 进行结帐。

现在我想从我的稀疏视图中删除 B 。如何?

如果我只是 rm -r B,或 git rm -r B,或 git rm -r --cached B,那么 git 想要将该删除提交给 repo。但我想将 B 保留在 repo 中,只是不想将它保留在我的工作目录中。

0 投票
1 回答
192 浏览

git - 具有多个存储库的 git 稀疏结帐

我想创建一个从两个存储库中借用的项目,很少签出。然而,“${GIT_REPO}/info/sparse-checkout”的格式只引用了一个路径,而不是一个树状或以 repo 为中心的路径。因此,我似乎无法在此稀疏结帐文件中引用特定分支,例如:repo::branch:~/path

因此以下对我来说不适用于多个回购:

0 投票
1 回答
95 浏览

git - 空仓库中特定文件的稀疏签出

我有两个存储库:ci-test 和 ci-test2。ci-test repo 包含一个 CI.yaml 文件,而 ci-test2 repo 是空的。使用 mgit,我只对两个 repos 上的 CI.yaml 文件执行稀疏签出,我收到错误,“稀疏签出在工作目录上没有条目”。我几乎可以肯定会发生这种情况,因为我试图在 ci-test2 repo 中检出不包含它的文件。我想知道是否有办法优雅地处理这个错误,也许是通过查看 git read-tree。这只是一个例子,我有比这更多的存储库,而且我的 mgit checkout 类对我的存储库的内容一无所知。有人有想法吗?

0 投票
1 回答
232 浏览

bash - git 稀疏结帐(文件夹)有问题

这是我的 git 服务器树:

这是我的 git 版本树

这是我的詹金斯服务器树

我正在尝试检查存储库“B”中存储库“e”的内容我只需要我正在处理的当前分支的最后一个版本,我不想提交,只是为了获得一些最新信息要运行的日期只读脚本,所以depth 1我猜是可以的。

无论如何,我面临的问题是我能够进行稀疏结帐

我知道我很接近,但我得到的是:

不是这个(这是我想要的)

任何提示?

顺便说一句,我尝试了将“深度 1”用于“步骤 2”的不同方法,但没有成功:

--> 错误:pathspec 'myBranch' 与 git 已知的任何文件都不匹配。

--> 致命的:你在一个尚未出生的分支上

致命:一个名为“myBranch”的分支已经存在。

--> 如上所述工作

0 投票
1 回答
237 浏览

git - 使用 git sparse checkout 解决带冒号的文件名

当我在 Windows 上克隆存储库时,它会抱怨文件名带有冒号,因此签出失败。我想使用稀疏结帐来排除整个目录,但它不起作用。稀疏结帐是在这里提供帮助的正确方法吗?

我的步骤:

但是,它仍然会下载所有内容,并且由于该文件的名称中带有冒号,因此向 master 签出失败。我做的每一件事都正确吗?稀疏结账是帮助我的正确方法吗?

0 投票
1 回答
897 浏览

git - git sparse-checkout 从根 repo 中的子模块

我有一个包含 4 个子模块的主仓库:

  • 虚拟机
  • libvmi
  • qem
  • 硝基

sparse-checkout kvm想过滤掉一些与 Windows 上的文件系统限制不兼容的烦人文件(AUX是保留的文件名,并且 kvm 树包含aux.{h|c}

我了解如何sparse-checkout在普通存储库上执行操作,但是当我在子模块上执行相同操作时,它不起作用,.git/modules目录丢失:

第一个echo命令将失败,因为.git/modules尚未创建。

我不知道谁负责创建这个目录。

我在init某处错过了“”命令吗?

笔记:

我一直在 Stackoverflow 或博客文章中寻找解决方案:

但它们对我不起作用,因为我不想克隆一个单独的kvm仓库,然后再将它添加到我的主仓库中。

谢谢。

0 投票
1 回答
429 浏览

git - 使用 git sparse-checkout init 时如何跳过无效路径

我的电脑的操作系统是windows,repo中的文件名可能在windows中无效,所以我手动启用core.sparsecheckout并编辑.git/info/sparse-checkout以签出指定的目录,它运行良好。

最近我更新git for windows并关注了这篇文章。但命令git sparse-checkout init --cone失败,并输出error: invalid path '/path/of/invaild/filename'.

那么,这个命令可以通过一些特殊技巧跳过无效的文件名吗?还是我应该等待开发人员修复它只是一个错误?

0 投票
0 回答
24 浏览

git - 相同的 git 大小,带和不带 --depth=1

我正在编写一个脚本来克隆一个大型 git 存储库,修改一些文件并将更改推送回远程。它需要尽可能快地运行。

现在,克隆存储库大约需要 10 分钟。生成的文件夹大约有 3GB 大,其中 50% 是.git文件夹。我尝试使用 克隆存储库--depth=1,但结果基本相同。

我也试过运行git fetch origin --depth=1,它会下载一个.git大约 100MB 的文件夹。但是,当我检查分支时,它又回到了 3GB。

为什么我的.git文件夹有和没有的大小相同--depth=1?是不是说我的历史基本很小,大小来自于大的二进制文件等?

注 1:此工作区使用 git lfs。不知道有没有影响。

注 2:我打算在不久的将来尝试部分克隆。看起来它可以解决我的问题,因为我确切地知道我需要修改哪些文件。

0 投票
1 回答
188 浏览

git - Does sparse-checkout act on tracked file?

My local and remote server both are centos 7.
I tracked README.md in local repo with git version 1.8.3.1.When I revised README.md and push to remote bare repo, I don't want README.md to be checked out.
In remote repo,git version is 2.16.6,I set post-receive as below:

In remote repo,I set sparse-checkout as below:

I found README.md still there,and not modified.

Then,I revised sparse-checkout as below:

I got remote: error: Entry 'README.md' not uptodate. Cannot merge.

which sparse-checkout is correct?Where is the problem?

0 投票
1 回答
277 浏览

git - 大型monorepos上的Git和稀疏签出-隐藏稀疏签出规范的无关更改?(git-diff、git-log 等)

随着 git 越来越多地被宣传(和增强)以更好地支持非常大的存储库(所谓的“monorepos”),最近对稀疏签出工作流程进行了重大增强(git-sparse-checkout 命令和部分克隆/承诺/--filter ),我很惊讶在处理提交历史记录时找不到利用稀疏签出配置/规范的方法

我看到该主题已在之前的问题中部分提出:

唯一的答案提出了每个命令的路径过滤器,但是.git/info/sparse-checkout如果不是不可能的话,将规范转换为路径过滤器通常是不平凡的。

缺乏稀疏结帐支持似乎特别成问题git diff,在大型单仓库中,由于所有其他团队/区域的更新,两个相当远的仓库版本之间的差异可能会被严重掩盖,或者实际上无法访问,当命令行上的简单路径过滤器不可行。这主要是一个可读性/可达性/可用性问题,但当您对树的选择及其所有重命名源感兴趣时,大概也有一个性能组件。

有谁知道使用稀疏检出配置来限制/范围导致git diff(在提交之间)和其他类似的工具git log是可能的,和/或这种可能性是否在起作用?