问题标签 [shallow-clone]

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 回答
366 浏览

git - `.git/shallow` 文件中保存了哪些信息?

我知道如果目录中有.git/shallow文件, git 认为存储库很浅.git

cat在深度为 5 的本地克隆浅存储库上 -ing 文件时,我只看到一个散列,而当我运行 jenkins 作业以在深度 5 处克隆相同的存储库时,我看到多个散列。

该文件中保存了哪些信息?它是如何确定的?

0 投票
0 回答
231 浏览

git - Git在分离HEAD后拉浅克隆

让我们考虑以下两种情况。

案例#1(浅克隆)。

案例 #2(没有 --depth 的克隆)。

因此,区别仅在于在第一种情况下我克隆了有限数量的提交,而在第二种情况下我克隆了所有提交。两种情况下的分支都是相同的,因为显示“git branch”输出。

问题:为什么“拉”在第一种情况下有效而在第二种情况下无效?

0 投票
1 回答
97 浏览

git - 从 Catchall(脏)存储库创建适当的 Git 存储库

让我们调用my-dirty-repository一个现有的 Git 存储库,其中包含许多不相关的脚本。这是一个需要适当清理的包罗万象的存储库。

作为一个最小、完整和可验证的示例,假设此存储库仅包含:

在多个分支之间进行各种独立更新的提交。

目的是创建 2 100% 独立的 Git 存储库,只有保留文件的历史记录(参考)。

我们称它们为my-clean-repository1and my-clean-repository2,第一个只有关于 script1 的历史,第二个只有关于 script2 的历史。

我尝试了 3 种方法来满足我的需求,但没有成功:

我很确定有一种方法可以正确执行它。

0 投票
2 回答
962 浏览

git - 将浅回购转换为普通回购

我已经“浅化”了一个回购:

现在我尝试推动:

我知道这个限制是由于回购很浅。

如何将浅回购转换为普通回购?

我不在乎失去旧的历史。其实我丢掉旧的历史

为了澄清这一点:

  • 我希望转换后的存储库保留提交历史记录,以及浅存储库的元数据(日期、作者、提交消息……)
  • 我要彻底丢掉旧历史
  • 我不关心与原始 repo 的兼容性:这将被视为新 repo
  • 我不在乎是否重新创建了提交,只是保留了元数据。

编辑

简单地删除.git/shallow文件不起作用:

编辑2

试图通过以下方式来浅显fetch

仍然留下一个grafted回购:

0 投票
2 回答
10466 浏览

git - Jenkins Pipeline:scm checkout 浅拷贝失败

我正在使用 Jenkins 文件来构建管道。我正在尝试使用 DSL 克隆参考存储库,如下所示。

并且当管道正在执行时,它正在被翻译成这个

这会在我的 Jenkins 服务器上克隆整个存储库。我只想获得我的 repo 的浅表副本,以便我可以将我的 Jenkins 服务器从空间紧缩中拯救出来。请在这里帮忙。

我正在使用:詹金斯版本:2.58,

插件:

流水线 SCM 步骤:2.4

吉特:3.3.0

0 投票
2 回答
709 浏览

git - 如何在没有提交历史的情况下制作可见的 github fork?

假设您想将旧的(GitHub)存储库A克隆到您自己的存储库B中。但是,您不需要任何分支,也不需要很长的提交历史。你想要的是一个浅层克隆,作为仓库最新状态的快照。最好只使用最新的提交消息,同时仍然显示A它是从哪个点分叉的。这在 GitHubInsights > Network选项卡中以图形方式显示,箭头从一个用户回购到另一个。

问题是到目前为止我尝试过的解决方案,最终都在 GitHub图表中出现了差距。Network这可能是因为它们都依赖于删除/恢复.git强制推送,这似乎会导致 GitHub UI 断开克隆/分叉,而最终看起来像这样:

在此处输入图像描述

我不确定如何最好地表达这个问题,因为已经有几十个听起来非常相似,如果不一样的话,而他们似乎都没有解决这个问题,如果可能的话。

所以问题是:

如何在 GitHubNetwork图表中保留 forks 依赖项,同时仍删除大部分提交历史记录?

(我知道我无法删除整个历史记录并且仍然在图表中连接了一些东西,但是不应该以这样一种方式压缩分叉,使所有提交A都变成一个压缩提交(从叉子),而所有新的B都是正常的?)


我已经查看了这些答案,但它们并没有太大帮助:

0 投票
2 回答
121 浏览

git - Git浅克隆:只有最近X个月有活动的分支

有一个长期运行的项目存储库,它比我想要或需要的要大得多。最近几个月我浅克隆但没有使用--no-single-branch,所以我的本地仓库只知道origin/master并且我无法检查任何其他分支。

我如何“撤消”--single-branch 克隆?我知道我可以获得所有分支,或者一次添加一个

ALL 包括几十个我不需要知道的分支,并且下载了太多 MB。一次1个有点痛。

我的问题是,如何添加在过去x个月(或x *100 次提交)中有活动的所有分支 - 并跳过其他所有内容?

如何获取按最近提交排序的 Git 分支列表?按日期对分支进行排序,但不适用于浅克隆。有没有办法从 GitHub 而不是从 git 本身获取这个列表?(因为这似乎需要下载所有内容。)

0 投票
1 回答
2400 浏览

node.js - 使用 simple-git 的 nodejs 浅 git 克隆

我正在尝试使用simple-git创建浅克隆。我正在尝试创建此命令的等效项:git clone --depth 1 https://github.com/steveukx/git-js.git. 我的代码如下:

我在 中指定--depth 1options,但代码复制了整个回购历史,它似乎完全忽略了给定的选项。我这样做是否正确,什么会导致这种行为?

0 投票
0 回答
264 浏览

git - `git --shallow-since`的确切算法是什么?

如果我打电话

我无法访问提交 56985dd8a6,尽管它来自 2019 年 9 月 21 日。Git 在以下屏幕截图中的红线处停止:

gitk 截图

我不明白这里的算法。虽然下一次提交是 2019 年 9 月 17 日,所以可以假设它在第一次太旧的提交时停止,在此之前已经有一个 2019 年 7 月 10 日。那么,什么是规则--shallow-since

0 投票
3 回答
6855 浏览

git - 即使在 Jenkins 构建上禁用了浅层,SonarQube 也会发出浅层克隆警告

我有一个使用 MSBuild 构建解决方案的 Jenkins 服务器。未启用浅克隆(在高级克隆行为上),所以我认为它正在获取所有最后的提交。我正在使用 SonarQube 进行分析。我设置在构建之前运行开始分析,在构建完成后运行结束分析。SonarQube 分析成功完成,但我收到警告:

在分析过程中检测到浅克隆。某些文件会丢失 SCM 信息。这将影响问题的自动分配等功能。请配置您的构建以禁用浅层克隆。

有人知道我对 SonarQube 缺少什么可以正常工作吗?