如何测试Git存储库是否浅?

2023-12-21

当我从存储库进行本地克隆时,如果原始存储库较浅,则克隆会失败。

git clone -l -- . target-dir

由于情况并非总是如此,我想找出之前的克隆,但不知道该怎么做。

到目前为止我尝试的很少,基本上是在克隆上创建错误消息。目前,我只是获取浅层,如果失败,我会进行简单的获取,因为如果存储库是浅层的,那么之后它应该是浅层的:

if ! git fetch --unshallow; then
    git fetch
fi

然而,不能保证之后会变得不浅(远程获取也可能是浅的),因此对 git 存储库的(不)浅度进行测试会更好。


如果你的 Git 是2.15 https://github.com/git/git/blob/v2.15.0/Documentation/RelNotes/2.15.0.txt#L87-L89或稍后,运行:

git rev-parse --is-shallow-repository

这将打印false(不浅)或true(浅的):

if $(git rev-parse --is-shallow-repository); then
    ... repository is shallow ...
fi

下面的答案可以追溯到 2.15 之前的 Git 版本。


If your Git is older than 2.15,1 just test for the file shallow in the Git repository directory:2

if [ -f "$(git rev-parse --git-dir)"/shallow ]; then
    echo this is a shallow repository;
else
    echo not a shallow repository;
fi

或(较短):

[ -f "$(git rev-parse --git-dir)"/shallow ] && echo true || echo false

您可以将其转换为 shell 函数:

test_shallow() {
    [ -f "$(git rev-parse --git-dir)"/shallow ] && echo true || echo false
}

甚至自动执行 Git 版本检查:

test_shallow() {
    set -- $(git rev-parse --is-shallow-repository)
    if [ x$1 == x--is-shallow-repository ]; then
        [ -f "$(git rev-parse --git-dir)"/shallow ] && set true || set false
    fi
    echo $1
}

1git --version will print the current version number:

$ git --version
2.14.1

$ git --version
git version 2.7.4

等等(此时我在不同的虚拟机/机器上有多个版本。)您还可以运行:

git rev-parse --is-shallow-repository

如果只是打印--is-shallow-repository,您的 Git 是 2.15 之前的版本并且缺少该选项。

2To see why there are double quotes around $(git rev-parse --git-dir), see Tom Hale's comment https://stackoverflow.com/questions/37531605/how-to-test-if-git-repository-is-shallow/37533086?noredirect=1#comment125560270_37533086. Note that testing this is a bit tricky since git rev-parse --git-dir from the top level of, e.g., the repository /tmp/with space just prints .git; you must be in a subdirectory, such as /tmp/with space/sub to observe the problem.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何测试Git存储库是否浅? 的相关文章

  • 重新打包存储库对于大型二进制文件有用吗?

    我正在尝试将大量历史记录从 Perforce 转换为 Git 并且一个文件夹 现在是 git 分支 包含大量大型二进制文件 我的问题是运行时内存不足git gc aggressive 我的主要问题是重新打包存储库是否可能对大型二进制文件产生
  • 分支明显不同,但提交历史是相同的

    git status告诉我我的分支和我在另一个存储库上开始的分支已经分歧 On branch master Your branch and origin master have diverged and have 13 and 13 dif
  • IntelliJ:查看本地和 git 提交/分支之间所有已更改文件的差异

    使用 IntelliJ 的 diff 查看器是检查代码的一种非常好的方法 因为您可以使用 IntelliJ 代码编辑器的所有功能 重构 完成等 在本地版本中进行更改 不幸的是 我还没有弄清楚当你在 IntelliJ 中进行代码审查时如何做最
  • 如何使用交互式变基将提交编辑为未提交?

    我想使用交互式变基来编辑以前的提交 但是当我进入该提交的编辑模式时 所有文件都已提交 我知道我可以进行更改并修改提交 但我希望所有更改最初都未提交 暂存或以其他方式 这样我就可以对其进行编辑 就像在最初提交之前一样 这可能吗 Imagine
  • 有谁知道类似于 SVN Time-Lapse View 的 Git 工具 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 SVN Time Lapse View 是一个跨平台查看器 可以下载文件的所有修订版本 并允许您通过拖
  • 为什么我无法创建/签出该分支?

    我正在尝试创建本地 Git 分支 但它不起作用 以下是我正在使用的命令 tablet edit11 git checkout b edit 11 Switched to a new branch edit 11 tablet edit11
  • 如何正确使用“mvn release:prepare”?

    我尝试了这个命令 用dryrun在我的 Maven 项目上进行测试 mvn release clean release prepare DdryRun true DgenerateBackupPoms false Dtag solocal
  • `git ls-files -s` 输出中不同字段的含义是什么?

    在 Git 中 命令返回的典型结果行git ls files s好像 100755 be2c2e9b0966253096472d4b482c458bc892e493 0 gitignore 这些字段是什么意思 不用再犹豫了git ls fi
  • 格里特:! [远程拒绝] HEAD -> refs/publish/master (没有新的更改)

    我做了一些更改 提交了它们并将分支推送到 Gerrit git push gerrit 现在我的更改没有出现在 Gerrit 中 我认为这是因为我手动推送更改而不是使用git 审查 https github com openstack in
  • 如何合并两个连续的 git 存储库

    我有一个相当独特的情况 我有一个名为 Project1 的存储库 我在其中工作了一些时间 几个月 一年后 我创建了存储库 Project1 Again 从 Project1 停止的地方开始 现在 我希望修订历史记录是连续的 因此我希望它们合
  • Netbeans 和 Git,.obj 文件被忽略

    我正在开发一个涉及 obj 文件的小型 git 项目 当我查看 项目选项卡 时 我发现它们被忽略了 但如果我查看我的 gitignore 我无法理解为什么 DepthPeeling nbproject private DepthPeelin
  • git 认为文件已更改

    我在一台机器上对一个项目做了一些工作 然后推送到 github 在另一台机器上克隆并做了一些工作 然后推送 然后我回到第一台机器并做了一个pull 现在 第一台机器认为项目中最初的所有文件都已更改 我试过了 git checkout f a
  • 如何在 macOS 上将 Git 升级到最新版本?

    我刚刚购买了一台装有 OS X Lion 的新 Mac 我在终端中检查了默认安装的 git 版本 我得到了答案 git version gt git version 1 7 5 4 我想将 git 升级到最新版本 1 7 8 3 因此我下载
  • 如何克隆特定的 Git 标签

    From git clone 1 手册页 http git scm com docs git clone branch还可以在结果存储库中的该提交处获取标签并分离 HEAD 我试过 git clone branch
  • Git 将一个分支合并到所有其他分支中

    我知道这个问题已经在这里被问过 https stackoverflow com questions 2329716 merging changes from master into all branches using git https
  • 如何让 Aptana Studio 记住 git ssh 密码

    我找不到任何有关如何获得 Aptana Studio 的内置 git 支持来记住执行推 拉操作的 ssh 密码的指南 信息 有人有什么想法吗 Aptana Studio 实际上是内置的 GIT 程序 它将在 Windows 上的 C Use
  • 仅使用 Git grep 的文件名

    我只想查看文本中包含特定单词的不同文件 current directory git grep word 显示文件中具有匹配单词的每一行 所以我尝试了这个 current directory git grep word files with
  • 使用 gitignore 嵌套存储库。

    我想嵌套 2 个 git 存储库 我一直在阅读子模块 有一段时间我认为它很棒 我想我可能想要其他东西 这是我的情况 首先 我想我应该提到我的所有服务器都托管网站 并以 staging domain com 和 domain com 实时 模
  • git 是否有任何静态接口?

    我一直在寻找一个宁静的 git api 但似乎没有找到 我得到的最接近的是 Github 的 api 来访问一些存储库信息 还有其他的实施吗 Orion Git API http wiki eclipse org Orion Server
  • 部分共享git仓库

    我是 git 新手 我想知道是否支持以下场景 如果支持的话如何支持 即用于设置和更新的 git 命令 可以从三个不同的地方获取存储库 本地 镜像 和 github mirror 完全镜像 local github 镜像 local 但 受版

随机推荐

  • 地理编码 API 有多少请求是免费的?

    我想使用 Google Geocoding API 从纬度 经度获取地址 为此 我想知道 使用免费帐户可以完成多少次点击 下面的链接显示了每 24 小时内 2 500 个免费请求 Google 地理编码 API 免费吗 https stac
  • 在专有软件中使用 Glassfish 库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想在 CDDL GPLv2 许可证下的专有软件中使用 Glassfish 的某些部分 我可以这样做吗 我没有修改这些库的代码中的任何内容
  • 如何在我的 ASP.NET 菜单中使用 Bootstrap 风格的 BreadCrumb?

    我是一名新的 ASP NET 开发人员 也是 Twitter Bootstrap 的新用户 我试图在我的 ASP NET 应用程序中添加面包屑导航 我已经开发了它 但我正在尝试在其上应用 Twitter Breadcrumb 的风格 将特定
  • WebAPI POST [FromBody] 未绑定

    我将 JSON 发布到 WebAPI 控制器 但模型上的属性未绑定 public void Post FromBody Models Users User model throw new Exception model Id ToStrin
  • 如何指示 GCC 在出现 5 个错误后停止?

    是否可以指示 GNU c 编译器在发现 5 个错误后停止 在文档中找不到这个 命令行选项 fmax errors N https gcc gnu org onlinedocs gcc 4 6 0 gcc Warning Options ht
  • 在 MATLAB 中将 ASCII 代码转换为字符串

    如果我在 matlab 中有一个字符串 我可以使用以下命令将其转换为 ASCII 代码向量double gt gt my string asd gt gt double my string ans 97 115 100 我怎样才能从另一条路
  • 如何找到张量对象中每一行的最大索引?

    因此 我正在创建一个 pytorch 模型 对于前向传递 我应用前向传递方法来获取包含每个类别的预测分数的分数张量 该张量的形状为 100 10 现在 我想通过将其与包含实际分数的 y 进行比较来获得准确性 该张量的形状为 100 为了比较
  • 玩2.5 Ebean和JPA:NoSuchMethodError

    我在将项目迁移到 Play 2 5 时遇到了另一个问题 其中一个项目同时使用 Ebean 和 JPA 这是build sbt name Project version 1 0 SNAPSHOT lazy val root project i
  • getParcelable() 由于 AGP 8 中的 ifTable 为空而崩溃

    我最近更新到了 AGP 8 并在 Play 商店上发布了更新 我收到一些最近未更改的代码区域发生崩溃的报告 我相当有信心这是由 AGP 8 升级引起的崩溃 特别是在 R8 全模式周围 崩溃周围的代码正在恢复布局管理器的状态 恢复代码 if
  • 如何使用 SQL 命令在 C# 中实现此计划?

    我有两张桌子 表 1 带栏name markaz nvarchar 100 code markaz nchar 20 表 2 带栏name markaz nvarchar 100 code markaz nchar 20 我想实现这个计划
  • 按钮上的 KeyboardAwareScrollView

    我在屏幕底部有一个按钮 在屏幕顶部有一个输入字段 什么时候
  • 循环元素后测试字母顺序

    我尝试编写一些代码来检查下拉菜单中选项的字母顺序 所以我所做的就是循环下拉菜单并将选项的值添加到数组中 然后我想检查数组的值是否按字母顺序排列 到目前为止我有这个代码 var optionsArray cy get filter1 opti
  • Woocommerce - 添加到缺货商品的购物车

    我正在使用 Woocommerce 建立一个电子商务网站 即使该商品缺货 我也需要选择 添加到购物车 我怎样才能做到这一点 感谢 并有一个愉快的一天 这可以通过以下方式完成 转到仪表板 gt WooCommerce gt 产品 gt 库存
  • 使用 Raphael JS,用具有偏移量的背景图像填充 SVG 元素

    我想要这个这个使用具有偏移量的背景图像填充 SVG 元素 https stackoverflow com questions 5239458 fill svg element with with a background image wit
  • 通过 R 连接时无法查看 mongo DB 中的集合

    我使用 mongodb 包通过 R 连接到 mongoDB 连接成功 gt mongo is connected mongo 1 TRUE gt 如果我检查运行 mongoDB 的主机 gt use reporting switched t
  • 如何使用Matlab快速获得均方误差?

    我不知道这是否可能 但让我解释一下我的问题 想象一下我有下面的数组 errors e1 e2 e3 现在我要计算的是下面 MSE 1 array lenght e1 2 e2 2 e3 2 我可以用循环来做到这一点 但我想知道是否有任何快速
  • Mac 上 debug.keystore 的默认路径是什么?

    我是 Mac 新用户 我到处寻找debug keystore文件 但没有运气 难道是eclipse无法创建文件吗 默认位置是 Users
  • 如何在 git 中正确使用 gettext?

    我有一个我开发并分发的小应用程序 现在我想用 gettext 添加 i18n 支持 我发现 gettext 需要运行多个命令并生成各种文件 并在源代码中包含新字符串时更新它们 gettext 与典型 git 工作流程交互的常用方法是什么 我
  • 为什么 Node cluster.fork() 在作为模块实现时会分叉父作用域

    我正在尝试实现一个使用的 Node 模块cluster 问题在于整个父范围与预期的集群代码一起分叉 我在 Mocha 中为模块编写测试时发现了这一点 测试套件将运行多次 而不是一次 如下所示 myModule js 创建了 N 个工作线程
  • 如何测试Git存储库是否浅?

    当我从存储库进行本地克隆时 如果原始存储库较浅 则克隆会失败 git clone l target dir 由于情况并非总是如此 我想找出之前的克隆 但不知道该怎么做 到目前为止我尝试的很少 基本上是在克隆上创建错误消息 目前 我只是获取浅