git 如何检测文件已被修改?

2024-01-04

git 如何如此快地检测到文件修改?

它是否对存储库中的每个文件进行哈希处理并比较 SHA1?这会花费很多时间,不是吗?

或者说比较atime, ctime or mtime?


Git 努力仅从 lstat() 值中确信工作树与索引匹配,因为回退到文件内容的成本非常高。

文档/技术/racy-git.txt http://www.kernel.org/pub/software/scm/git/docs/technical/racy-git.txt描述了使用哪些统计字段,以及如何避免由于低 mtime 粒度而导致的某些竞争条件。这篇文章有一些更详细的信息 http://www-cs-students.stanford.edu/~blynn/gg/race.html.

统计值不防篡改,请参阅 futimens(3)。 Git 可能会被欺骗而错过对文件的更改;这不会损害内容哈希的完整性。

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

git 如何检测文件已被修改? 的相关文章

  • 全局 git 配置数据存储在哪里?

    使用时git config global要进行设置 它将写入哪个文件 Example git config global core editor blah 我在这些地方找不到它 C Program Files Git etc gitconf
  • 如何在 git 中删除 subversion 远程?

    我有一个最初使用 git svn 创建的 git 存储库 现在我有一个推送到的 git 服务器 但 svn 存储库已丢失 我可以删除 svn 远程吗 如何 您可以编辑 git config文件并删除与要删除的遥控器关联的部分 您要删除的行可
  • “Git 推送非快进更新被拒绝”是什么意思?

    我正在使用 Git 来管理我的两台计算机和我的开发 我尝试将更改提交到 GitHub 但收到此错误 无法将一些参考推送到
  • 如何为新的 eclipse (neon) java 项目初始化 git

    我安装了 eclipse Neon 的新副本 并在一个新的闪亮工作区中创建了一个新的 gradle java 项目 将 git 添加到聚会中的最佳实践是什么 我读到在项目目录中初始化 git 是真是个坏主意 https stackoverf
  • 如何列出 Git 1.7+ 中的所有远程分支?

    我试过了git branch r 但这仅列出我在本地跟踪的远程分支 如何找到我没有的列表 命令是否列出对我来说并不重要all远程分支或仅那些未跟踪的分支 For the vast majority 1 of visitors here th
  • Git ref master 现在为空,如何恢复?

    我不完全确定发生了什么 但由于某种原因 我的 git 存储库的主引用文件现在是空的 我们在 Dropbox 上托管存储库 所以也许与此有关 但现在我无法从中提取 它是这么说的 Your configuration specifies to
  • 如何在 Android Studio 中比较两个 Git 分支?

    我不确定是否可以将主分支 或任何其他分支 与当前功能分支进行比较 例如GIT does 我想要两个分支 主分支和功能分支 之间的差异 以便我可以在合并之前比较差异 我发现 Git UI 对用户不太友好 就像在 AS 中一样 我可以遍历代码并
  • Git 拉回 master 中的提交?

    一位同事 我们称之为亚伦 被指派翻新网站的一部分作为长期项目 他创建了一个新的 Git 分支 名为aaron 他所有的改变都是在这个分支上进行的 当他工作时 我继续维护整个网站 将我的更改提交给master 最终 Aaron 将他的分支合并
  • 判断 Git 提交是否是合并/恢复提交

    我正在编写一个脚本 需要检查特定提交是否是合并 恢复提交 我想知道是否有 git 技巧 到目前为止我想到的 我绝对不想依赖这里的提交消息 是检查HASH 2看看我是否没有收到错误 是否有更好的方法 判断某个东西是否是合并很容易 这是不止一位
  • Gerrit 安装后无法克隆所有项目存储库

    我有一个新设置的 Gerrit 实例 目前只有两个存储库 所有项目 binutils 测试 尝试克隆所有项目时 我收到以下错误 git clone ssh user hostname 29418 All Projects Initializ
  • Git:如何使外部存储库和嵌入式存储库作为通用/独立存储库工作?

    我有一个大项目 比方说A repo 其中有一个子文件夹来自B repo 当我提交时 我会遇到如下警告A repo warning adding embedded git repository extractor annotator serv
  • git在Windows和Linux之间切换后强制刷新索引

    我有一个Windows和Linux共享的磁盘分区 格式 NTFS 它包含一个 git 存储库 约 6 7 GB 如果我只使用Windows or 只使用Linux操作 git 存储库一切正常 但是每次切换系统的时候git status命令将
  • GitHub API:标记提交所属(与 git describe --tag 并行)

    我正在使用 GitHub API 进行实验octokit https github com octokit octokit rb红宝石 我的目标是能够提取提交 SHA 所属的 标签 现在我可以使用命令行轻松地执行此操作 gt git des
  • 在 git 子模块中签出分支

    如何从子模块内更改分支 当我跑步时git branch从子模块内 我看到以下输出 gt git branch HEAD detached from 229a7b2 master 我如何将自己置于一个新的分支上 喜欢development 只
  • 有没有办法缓存 https 凭据以推送提交?

    我最近转而将我的存储库同步到 GitHub 上的 https 由于防火墙问题 并且每次都要求输入密码 有没有办法缓存凭据 而不是每次都进行身份验证git push 自 Git 1 7 9 2012 年发布 以来 Git 中有一个巧妙的机制可
  • 在 git repo 中查找超过 x MB 且 HEAD 中不存在的文件

    我有一个 Git 存储库 用于存储随机的内容 主要是随机脚本 文本文件 我设计的网站等 随着时间的推移 我删除了一些大型二进制文件 通常为 1 5MB 这些文件会增加存储库的大小 而我在修订历史记录中不需要这些文件 基本上我希望能够做到 m
  • git 可以与 Xcode 集成吗?

    有没有办法将 git 存储库与 Xcode 内置的 SCM 功能一起使用 Xcode 4 原生支持 git WWDC 2010 上的开发者工具国情咨文演讲 在这里了解更多 Xcode 4 中的新增功能 http developer appl
  • refname 不明确且拉取失败

    我运行了以下命令 因为我想将生产分支移回而不必先签出 git branch f production HEAD 1 现在 当我检查生产时 我收到以下警告 warning refname production is ambiguous 然后我
  • git push heroku master 权限被拒绝

    我正在关注 ruby railstutorial 我运行命令 git push heroku master 它吐出了这个错误 Permission denied publickey fatal Could not read from rem
  • Git:显示分支之间的差异,忽略合并的提交

    我的存储库历史记录看起来像这样 x y z branch a b c d e master 我想获得 branch 完整历史记录的单个差异 即 像 git diff 输出 我不想要像 git log p 产生的一大堆差异 而不包括任何从 m

随机推荐

  • C++ 和 C 中的联合初始化

    我已经构建了一个工作 C 库 它使用常量 在头文件中定义为 typedef struct Y union struct bit field bits uint8 t raw 4 X CardInfo static const CardInf
  • CallerInfo,获取传递给方法的变量名称(如 nameof)

    public void Test string myString hello public void Method string text COnsole WriteLine text should print myString hello
  • iOS7 中 UIKeyboard 不会自动半透明

    据我了解 在 Xcode 5 和 iOS 7 项目中进行开发时 与 UITextField 交互时弹出的键盘应该是半透明的 并通过背景中的任何颜色显示 我的两个项目都不是这种情况 我有一个彩色且模糊的背景 我希望它能够通过键盘实现 但是键盘
  • 如何使用 EmberJS 扩展命名空间

    我用 Javascript 编程已经有一段时间了 最近 我做了一个相当大的 jQuery 项目 并应用了模块模式 如这篇精彩文章中所述 http www adequatelygood com 2010 3 JavaScript Module
  • 以管理员身份运行 R

    我使用自己的笔记本电脑安装 R 发现它只有一个库 即使这个图书馆仍然read only 每次我使用 Rstudio 时 install packages abc 我可以看到新的包自动存储到其中read only库文件夹 在我办公室的桌面上
  • 我的布局未在 Magento 管理视图中加载

    这是我的控制器
  • SDK 管理器无法启动 Windows 7 64 位?

    我知道这个问题之前已经被解决过几次 但我没有对一个旧问题发表评论 而是决定用 希望 更新的信息提出一个新问题 正如标题所示 无论我做什么 我都无法让 SDK Manager 运行 我尝试安装 32 位和 64 位版本的 jdk1 7 0 但
  • 如何使用 NSUserDefaults 存储字典数组

    尝试存储字典数组NSUserDefaults var theTasks String Any num 1 title example colour red let defaults NSUserDefaults standardUserDe
  • 如何使用 ColdFusion 从 XML 字符串中删除所有多余的空格?

    我从客户端收到一个 XML 字符串 格式如下
  • web.xml 中的 Struts2 配置文件名

    http struts apache org 2 3 1 2 docs webxml html http struts apache org 2 3 1 2 docs webxml html 根据上面的链接我们可以在web xml中指定配置
  • 在单独的线程上捕获未处理的异常

    我正在使用以下事件来捕获主 UI 线程中未处理的异常 Application ThreadException 不幸的是 它无法在单独的线程中捕获那些未处理的错误 我知道 AppDomain CurrentDomain UnhandledEx
  • 如何将仓位策略添加到 Angular CDK 叠加层?

    如何添加定位策略 ConnectedPositionStrategy 到 Angular CDK 覆盖 我尝试通过指定它positionStrategy属性并将其传递给overlay create import Overlay Connec
  • 如何获取生成表的行表示?

    我想要得到Row N lt gt 生成的 JOOQ 表类型的表示 我想在这种情况下使用它 val p PROJECTS as p val pmu PROJECTMEMBERUSERS as pmu val query db select p
  • 提取所有 JSON 密钥

    我有一个 JSON 列j like a 2 b b1 3 b2 5 c 3 a 5 d 1 c 7 如何从 Presto 获取所有不同的 顶级 键名称 IE 我喜欢 select distinct foo j 回来 a b c d 请注意
  • Fetch Type LAZY 仍然会导致急切加载 Hibernate Spring 数据

    我使用 Spring 数据创建了一个简单的 Spring boot 项目 我有一个与标签具有一对多关系的 TagGroup 实体 Entity Table name TAG GROUP public class TagGroup OneTo
  • moz变换比例减小div大小问题

    我在 mozilla moz transform 缩放属性方面遇到问题 我正在寻找 Zoom 属性的替代品 它在除 Firefox 之外的所有平台上都能正常工作 当我想缩小 div 时 它的 内容 确实缩小了 但容器的大小保持不变 在其他内
  • 在 JavaScript 正则表达式匹配中移动索引

    我有这个正则表达式来从文本中提取双词 A Za z s A Za z g 以及这个示例文本 Mary had a little lamb 我的输出是这样的 0 Mary had 1 a little 而我的预期输出是这样的 0 Mary h
  • 设置远程共享继承其父目录权限的 C# 代码

    我有两台计算机 分别称为客户端和服务器 位于 Windows 域中 服务器有一个可以从客户端计算机访问的共享目录 我想在客户端上运行一个 C 应用程序 该应用程序设置此共享的权限以继承服务器上共享的父目录的权限 我该怎么做呢 我已经尝试过以
  • 在 Google Cloud Storage 存储桶上设置缓存控制

    我有一个存储桶 其中包含经常更新的公共图像 并且希望禁用默认缓存持续时间 3600 例如 Cache Control private max age 0 no transform 使用 PHP 上传文件时可以设置缓存控制吗 有没有办法为存储
  • git 如何检测文件已被修改?

    git 如何如此快地检测到文件修改 它是否对存储库中的每个文件进行哈希处理并比较 SHA1 这会花费很多时间 不是吗 或者说比较atime ctime or mtime Git 努力仅从 lstat 值中确信工作树与索引匹配 因为回退到文件