问题标签 [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.
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 中,只是不想将它保留在我的工作目录中。
git - 具有多个存储库的 git 稀疏结帐
我想创建一个从两个存储库中借用的项目,很少签出。然而,“${GIT_REPO}/info/sparse-checkout”的格式只引用了一个路径,而不是一个树状或以 repo 为中心的路径。因此,我似乎无法在此稀疏结帐文件中引用特定分支,例如:repo::branch:~/path
因此以下对我来说不适用于多个回购:
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 类对我的存储库的内容一无所知。有人有想法吗?
bash - git 稀疏结帐(文件夹)有问题
这是我的 git 服务器树:
这是我的 git 版本树
这是我的詹金斯服务器树
我正在尝试检查存储库“B”中存储库“e”的内容我只需要我正在处理的当前分支的最后一个版本,我不想提交,只是为了获得一些最新信息要运行的日期只读脚本,所以depth 1
我猜是可以的。
无论如何,我面临的问题是我能够进行稀疏结帐
我知道我很接近,但我得到的是:
不是这个(这是我想要的)
任何提示?
顺便说一句,我尝试了将“深度 1”用于“步骤 2”的不同方法,但没有成功:
--> 错误:pathspec 'myBranch' 与 git 已知的任何文件都不匹配。
--> 致命的:你在一个尚未出生的分支上
致命:一个名为“myBranch”的分支已经存在。
--> 如上所述工作
git - 使用 git sparse checkout 解决带冒号的文件名
当我在 Windows 上克隆存储库时,它会抱怨文件名带有冒号,因此签出失败。我想使用稀疏结帐来排除整个目录,但它不起作用。稀疏结帐是在这里提供帮助的正确方法吗?
我的步骤:
但是,它仍然会下载所有内容,并且由于该文件的名称中带有冒号,因此向 master 签出失败。我做的每一件事都正确吗?稀疏结账是帮助我的正确方法吗?
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
仓库,然后再将它添加到我的主仓库中。
谢谢。
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'
.
那么,这个命令可以通过一些特殊技巧跳过无效的文件名吗?还是我应该等待开发人员修复它只是一个错误?
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:我打算在不久的将来尝试部分克隆。看起来它可以解决我的问题,因为我确切地知道我需要修改哪些文件。
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?
git - 大型monorepos上的Git和稀疏签出-隐藏稀疏签出规范的无关更改?(git-diff、git-log 等)
随着 git 越来越多地被宣传(和增强)以更好地支持非常大的存储库(所谓的“monorepos”),最近对稀疏签出工作流程进行了重大增强(git-sparse-checkout 命令和部分克隆/承诺/--filter ),我很惊讶在处理提交历史记录时找不到利用稀疏签出配置/规范的方法。
我看到该主题已在之前的问题中部分提出:
唯一的答案提出了每个命令的路径过滤器,但是.git/info/sparse-checkout
如果不是不可能的话,将规范转换为路径过滤器通常是不平凡的。
缺乏稀疏结帐支持似乎特别成问题git diff
,在大型单仓库中,由于所有其他团队/区域的更新,两个相当远的仓库版本之间的差异可能会被严重掩盖,或者实际上无法访问,当命令行上的简单路径过滤器不可行。这主要是一个可读性/可达性/可用性问题,但当您对树的选择及其所有重命名源感兴趣时,大概也有一个性能组件。
有谁知道使用稀疏检出配置来限制/范围导致git diff
(在提交之间)和其他类似的工具git log
是可能的,和/或这种可能性是否在起作用?