在 git 存储库中通过相应 blob 的哈希值查找文件?

2023-11-27

假设我有一个文件可能已经在 git 存储库中,并且它可能驻留在多个路径名下,甚至在同一个提交中。

如何查找包含 blob 的所有提交以及与该文件对应的哈希值,并列出这些提交以及每个文件所在的路径名?

是否有一种按哈希查找文件的技术也可以搜索索引和工作目录?


好的,扩展一下接受的答案

至于查找带有路径名的所有提交,那么接受的答案中的脚本唯一不为您做的事情就是打印路径名。但不用担心——它很容易修改。

如果您转到附近的 Git 存储库并运行git ls-tree -r HEAD您将看到此命令转储由命名提交引用的整个树层次结构(HEAD在我们的例子中)——同时具有 SHA-1 名称和“正常”文件名。答案中的脚本grep使用此输出来查找 SHA-1 名称并忽略其余部分。

所以我们可以将其修改为:

#!/bin/sh
obj_name="$1"
shift
git log "$@" --pretty=format:'%T %h %s' \
| while read tree commit subject ; do
    git ls-tree -r "$commit" | while read _ _ sha name; do \
      if [ "$sha" == "$obj_name" ]; then
        echo "$sha\t$name"
        break
      fi
    done
  done

…现在它还会打印与目标 blob 关联的文件的名称以及提交名称。

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

在 git 存储库中通过相应 blob 的哈希值查找文件? 的相关文章

随机推荐

  • 16:跳过密码保存,因为可能会提示用户使用 Android 自动填充

    我正在将谷歌智能锁集成到我的 Android 应用程序中 但在某些设备中 当我尝试将凭据保存到谷歌时 我收到此错误 我正在使用以下代码来保存凭据 Credential credential new Credential Builder em
  • 我可以将签出的文件集成到 perforce 上的不同分支中吗

    我们正在进行设计 为此我们在主分支中创建了类的骨架 现在 我们开始编码 为此我们有了一个新分支 因此 如果我可以将主分支中的所有新文件移动到新分支中 那就太好了 但是 我还无法签入它们 那么 是否可以集成已签出的变更列表 谢谢 Perfor
  • 检查 smoothScrollToPosition 何时完成

    我想查一下什么时候smoothScrollToPosition已完成滚动回第一项recyclerview 我尝试这样做 只有当 smoothScrollToPosition 仍在滚动时才有效 recyclerView getLayoutMa
  • 将具有 IFormFile 属性的模型从 Angular2 上传到 ASP.NET Core Web Api

    我正在尝试发送模型 其中一部分是代表用户头像的 IFormFile 类型属性 但不幸的是 我的头像属性始终为空 我看到了很多如何发送单个图片元素的示例 但我可以找到当它是模型的一部分而不是完成时的单个元素时如何发送它的示例例如这里 这是我设
  • 使用 AAD 令牌在 Databricks 中创建 Azure Key Vault 支持的秘密范围

    我的最终目标是将 ADLS gen2 容器安装到我的 Databricks 工作区中 作为在 Azure 服务主体的支持下由 Terraform 管理的部署的一部分 这是一个单一部署 它创建所有 Azure 资源 网络 防火墙 存储帐户 D
  • CSS 箭头进度条

    我目前正在学习有关 css 的所有内容 因此我尝试生成具有不同功能的不同形状 我目前正在开发一个项目 该项目需要一个水平箭头来显示发生的事务的 进度 所以我试图生成一个箭头 进度条 例如 XX 10 gt the XX s depict a
  • 使用 Enzyme 测试窗口滚动事件处理程序的最佳方法是什么?

    我一直在与一个新团队一起开发 React 应用程序 讨论围绕为触发 window scroll 事件方法的组件编写单元测试进行 那么 我们以这个组件为例 import React Component from react class MyC
  • 来自 HTTP 客户端的 PUT 请求后收到“411 Length required”

    我正在开发一个实现 HTTP 客户端的 Java 程序 我测试它向服务器发送请求 GET POST 和 DELETE 请求工作正常 例如 在 POST 请求之后我得到一个输出 Data extracted status message ok
  • Nodejs 为什么await 只限于异步函数?

    可能重复的wait 仅在 async 函数中有效 我是新来的NodeJS我发现了这个概念async await有点混乱 经过一番阅读和摸索 这是我的理解 假设我有一个函数sum像这样 function sum a b print the n
  • 复制的重复文件(Android Studio 0.4.0)[重复]

    这个问题在这里已经有答案了 在我的项目中 我使用 Apache 的 httpcore 和 httpmime 库 将 Android Studio 更新到 0 4 0 后 我在构建项目时遇到了以下问题 Duplicate files copi
  • 用于更新查找表中向量的某些值的规范 tidyverse 方法

    我经常需要根据查找表重新编码数据框列中的一些 不是全部 值 我对我所知道的解决问题的方法不满意 我希望能够在清晰 稳定 高效方式 在编写自己的函数之前 我想确保我没有复制已经存在的标准 Toy example data data frame
  • Chrome 扩展程序历史记录 API

    我正在编写一个 chrome 扩展 需要分析最近的浏览历史记录对于特定选项卡 The chrome history API允许我搜索全局历史记录中的项目 但似乎没有提供将结果本地化到特定选项卡的方法 我是否错过了什么 或者这是不可能得到的
  • 初始化后向Select2添加选项

    这似乎是一件标准的事情 但我正在努力寻找一个清晰而简单的解决方案 我希望能够向已初始化的 Select2 添加一个或多个附加选项 我正在使用旧版本的 Select2 但不确定该版本是什么 您可以像在标准中解决大多数问题一样解决涉及 Sele
  • Android:保存应用程序单例类中存储的数据的最佳方法

    保存 Android 应用程序的应用程序类 单例 中存储的数据的最佳方法是什么 我有一个安静的大应用程序 可以在活动之间共享大量数据 所以大部分都存储在Application Singleton上 一切都很好 util应用程序被操作系统在内
  • 一直向下滚动到 UITableView 的底部

    I ve a UITableView我试图将 36 行加载到其中 然后一直向下滚动到最后一个单元格 我试过这个 func reloadData chatroomTableView reloadData chatroomTableView s
  • PHP Artisan 使用 MAMP 和 Unix Socket 进行迁移

    我最初是在 Laravel 4 2 中开发我的应用程序 但后来决定将其移动到 5 0 版本 以便它涵盖 5 0 相对 4 2 的更多变化和优势 我正在尝试运行我的迁移 但是收到错误 PDOException SQLSTATE HY000 2
  • SwingWorker 中的错误处理

    我的问题是基于理论的问题 但它确实满足了我的特定需求 当您的 SwingWorker 抛出异常时 您 a 可以预见并且 b 需要恢复并继续 但您想通知用户此错误已经发生 您会怎么做 如何捕获预期的异常并通知用户而不违反 No Swing c
  • Storyboard Xcode 6 中的自适应转场是否已弃用?

    Xcode 6 interface builder by default has new checkbox use size classes It makes views adaptive When I try to make segue
  • Android 偏好设置摘要默认颜色?

    我已经在真正的手机中安装了我的应用程序 即使在模拟器中的所有文本 偏好摘要似乎是相同的颜色 在真正的手机中 颜色是不同的 某种蓝色 但我想这取决于手机的型号 如何将此颜色设置为我的自定义首选项组件 我已经实现了自己的搜索栏 其摘要文本颜色与
  • 在 git 存储库中通过相应 blob 的哈希值查找文件?

    假设我有一个文件可能已经在 git 存储库中 并且它可能驻留在多个路径名下 甚至在同一个提交中 如何查找包含 blob 的所有提交以及与该文件对应的哈希值 并列出这些提交以及每个文件所在的路径名 是否有一种按哈希查找文件的技术也可以搜索索引