Git 如何记录(或更可能表示)其 blob 的文件路径和名称,然后识别重命名?

2023-11-24

我正在尝试了解 git 设法“记住”文件名及其路径的方式,因为它只将文件内容存储在 blob 中。解释是在链接在这里Abizem 写的不错吗? (这是迄今为止我见过的最好的)

后续问题是 git 如何(在哪里)确定我们何时具有相似性,特别是在“移动”或路径名更新之后? (根据我的问题子目录重命名)。我需要能够维护一个现有的工作流程,该工作流程使用路径重命名作为低级个人 VCS 的一部分(我们有一个用于大型发布的大型 VCS,但没有适合日常/每小时使用的东西)


git定义了四种对象(Commit、Tag、Tree、Blob)。每个对象在其内容的哈希值之后被识别。

涉及重命名的三个对象是:

  1. blob:这个对应一个已提交的文件,该对象的内容是原始文件的压缩内容

  2. 树:这对应于目录列表,它包含文件名到其他对象(blob 或树)的映射,并记录访问权限

  3. 提交:包含提交消息、指向父提交(第一个提交除外)的指针以及指向树对象的指针

因此,当您重命名文件并提交它时,会创建一个新的树对象(如果它位于子目录中,则创建多个树对象),并具有到对象的新映射名称,但对象是相同的。

然而,git 不跟踪重命名,它尝试通过比较文件内容来重新发现它们。如果两个文件确实相似,但名称不同,则认为这是重命名。这可能非常耗时,并且如果有大量文件,则可能会失败。

编辑:看看 Git 社区书籍,其中有非常好的解释关于git如何存储信息。

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

Git 如何记录(或更可能表示)其 blob 的文件路径和名称,然后识别重命名? 的相关文章

  • 将 git dcommits 切换到 svn 分支

    I had master dcommit到 和rebase来自 颠覆trunk 我创建了一个中间 Subversion 分支tc 合并来自 2 个不同分支的更改 使用 git branch master git svn branch tc
  • Xcode - 使用 SSH 身份验证添加存储库时出现身份验证失败错误

    我正在尝试通过 Xcode gt 设置 gt 帐户添加存储库 但我被困在正确的地址上 我们的存储库地址非常简单 my domain com port project name 通过 SSH 密钥进行身份验证 有人可以帮助我了解这里发生了什么
  • 将各种提交合并为一而不合并

    是否可以加入各种提交 这是我的情况 我的应用程序在 OSX 10 6 和 10 7 中运行 我已经修复了 10 6 的一些内容 然后提交了 更改为 10 7 并再次修复修复程序 以便它们兼容 然后再次提交 然后返回到 10 6 并再次检查并
  • Git 将开发分支与生产版本的主分支合并

    我正在使用 Git 进行代码版本控制 我有一个开发分支 我正在其中进行所有肮脏的开发 每次我向世界发布生产版本时 我都想将其放在我的 master 分支下 问题是 每当我合并开发和 master 时 master 都会收到所有开发历史记录
  • 如何保持 git 存储库的公共和私有版本同步?

    我正在 Github 上发布一个开源 Rails 应用程序 可能是 MIT 许可证 我还想维护一个项目的私人分支 分支 我们将使用它作为付费服务的一部分 在这种情况下组织存储库的最佳方式是什么 而且 当我有两个项目的更新时 如何保持项目同步
  • GIT:无效路径“.editorconfig”

    从 master 克隆项目时出现以下错误 错误 无效路径 editorconfig 致命 无法签出工作树 警告 克隆成功 但结账失败 您可以使用 git status 检查签出的内容 并使用 git Restore source HEAD
  • Git Add - 致命:添加文件失败

    我的 git cmd exe 窗口如下所示 git add NextFolder error unable to create temporary file No such file or directory error NextFolde
  • egit:设置gitignore忽略所有eclipse项目文件

    我在 github 上有一个项目 我想从中删除所有与 eclipse 相关的文件 并允许克隆它的人使用他们想要的任何 ide 这是该项目 https github com vedi0boy Archipelo https github co
  • Git 会删除空文件夹吗? [复制]

    这个问题在这里已经有答案了 我已提交一个项目并将其推送到我的 GitHub 帐户 该项目包含以下部分文件结构 server conf some files java lib java 和 lib 文件夹为空 从 GitHub 下载我的项目时
  • Git Push 远程:致命:包超出允许的最大大小

    我接到了一个大项目 客户想将其添加到github 我是一点一点添加的 然后发生的事情是我太贪心了 一次添加了太多文件 现在 无论我尝试什么 我都会不断收到此错误 我怎样才能解决这个问题 我试图回滚 但也许我做错了 git push Ente
  • 使用 Git 处理 subversion:忽略对跟踪文件的修改

    我目前正在使用 subversion 存储库 但我正在使用 git 在我的计算机上本地工作 它使工作变得更加容易 但也使 subversion 存储库中发生的一些不良行为变得非常明显 这给我带来了问题 拉取代码后 有一个有点复杂的本地构建过
  • 目标路径已存在且不是空目录

    我克隆了一个 git 存储库 但不小心弄乱了 所以我重新克隆并显示消息 目标路径已存在且不是空目录 我尝试过删除 Mac 中带有目标路径名称的文件夹 但没有成功 我对编码非常陌生 因此我们将不胜感激 对于根文件夹 以及任何其他文件夹 对于那
  • github Diff 截断错误

    在 github 中发出拉取请求并审查更改时 我们收到了 Diff Truncated 错误 如下所示 任何人都可以帮助解决这个问题 拉取请求可能会触发以下提到的限制之一GitHub 支持 https stackoverflow com a
  • git 工作目录中的更改拒绝恢复

    我的 git 工作目录中有五个文件git status显示为已修改 当我git diff他们 整个文件显示为已更改 我有core autocrlf true但似乎没有效果 当我试图从同事那里获取更改时 真正的问题出现了 修改 的文件之一会被
  • Git 身份验证 - 以新用户身份拉取

    以下命令集可以正常工作 mkdir carboncake cd carboncake git init git remote add origin email protected cdn cgi l email protection rep
  • 在 git 中管理 schema.rb 的首选方法是什么?

    我不想添加schema rb to gitignore 因为我希望能够从该文件加载新的数据库架构 然而 保持检查状态会导致各种虚假冲突 而这些冲突很容易通过新的解决方案解决 db migrate reset 基本上我想要一种方法 将 sch
  • git update-index --no-assume-unchanged 不起作用

    我设置了assume unchanged咬了几个文件 现在我想取消它们 但这不起作用 gt git update index no assume unchanged Gemfile gt git ls files v grep Gemfil
  • 每个分支的 Git 磁盘使用情况

    你知道是否有办法列出每个分支的 git 存储库的空间使用情况 喜欢df or du would 分支的 空间使用情况 是指 尚未在存储库的其他分支之间共享的提交所使用的空间 这没有正确的答案 如果您查看仅包含在特定分支中的提交 您将获得 b
  • Git子模块绝对工作树路径配置

    这是我的子模块redmine 仪表板配置文件 子模块配置文件 core repositoryformatversion 0 filemode true bare false logallrefupdates true worktree Us
  • 警告:引用名称“xxx”不明确

    我想知道为什么我收到 refname is ambigeous 的警告 这是否意味着名称以该字符串开头的分支不超过两个 但这里没有 Thanks git checkout B03799 warning refname B03799 is a

随机推荐

  • 以全屏模式运行网站

    我正在寻找一种技巧 可以将我的网站置于全屏模式而无需人工交互 我发现了一些使用 HTML5 技术的示例 但所有这些都需要由人类交互触发 该网站将在电视上显示 我已经考虑在全屏模式下使用 SWF 文件加载网站 但我不想朝这个方向发展 而是想强
  • 如何调用另一个项目中的活动?

    你好 我是 android 新手 我创建了 2 个项目 现在 我想在单击按钮时从第一个项目调用第二个项目中的活动 第一个项目仅处理登录屏幕 当我单击登录按钮时 我需要调用第二个项目中存在的活动 我在网上搜索但没有找到任何我能正确理解的教程
  • UIStatusBarStyle Light Content 未将电池设置为白色?

    我正在以编程方式将状态栏设置为白色 UIApplication sharedApplication setStatusBarStyle UIStatusBarStyleLightContent 但是电池图标仍然是绿色的 苹果的例子显示应用这
  • 如何在 SystemVerilog 中将变量值传递给宏?

    我认为这个问题很好地概括了我想要的 将变量的值传递给 SystemVerilog 中的宏 例如我想要的 比如说 有 4 个名为 abc X def 的信号 我想将它们全部初始化为 0 所以 没有宏 abc 0 def 4 b0000 abc
  • Option、Either 等上的折叠和 Traversable 上的折叠有什么关系?

    Scalaz 提供了一个名为fold对于各种 ADT 例如Boolean Option Validation Either 该方法基本上采用与给定 ADT 的所有可能情况相对应的函数 换句话说 模式匹配如下所示 x match case C
  • 致命错误 C1001:编译器中发生内部错误。 'f:\dd\vctools\compiler\cxxfe\sl\p1\c\p0io.c'

    在 Visual Studio 2013 中构建 C 解决方案时 出现以下错误 fatal error C1001 An internal error has occurred in the compiler compiler file f
  • 如何单独/单独对齐行内的子可组合项?

    我是jetpack compose的新手 我正在尝试做一件我无法实现的简单事情 我想要做的是在同一行中对齐一个组件 在本例中是一个表面 位于行的开头 另一个组件 列 位于行的末尾 怎么才能得到这个呢 我正在尝试这个 但它不起作用 Row M
  • 如何获取标题? (java,httpclient 4.X)

    当我做 Header h first getAllHeaders 返回的Header数组为空 有任何想法吗 下面是我的代码 HttpClient httpclient new DefaultHttpClient CookieStore co
  • 正则表达式:包含至少 8 位十进制数字

    我需要正则表达式来检查字符串是否包含 8 位或更多十进制数字 它可以包含任何其他内容 并且数字不必是连续的 提前致谢 编辑 用 十进制数字 替换 数字 以匹配接受的答案 d d 8 也许不是最优雅 最有效的方法 但它确实有效 基本上它将匹配
  • 如何在Spring Boot中为RestTemplate设置PropertyNamingStrategy?

    我编写了一个 SpringBoot 应用程序 它使用一个 REST API 并呈现一个 REST API 我的模型 pojo 有驼峰命名的属性 应用程序使用的 json 具有 under score 属性名称 应用程序生成的 json 具有
  • React Native 中的 AutoCompleteTextView 兼容 iOS 和 Android

    我需要在本机反应中实现 AutoCompleteTextView 问题是没有这样的内置组件 所有可用于模仿此功能的模块和库并不完全相似 主要问题是建议没有出现在视图上 如选择框 选择器 即使是这样 它与KeyboardAvoidingVie
  • 尝试使用 jasmine 和 Angular 时出现错误

    当我尝试使用时 httpBackend flush 我收到错误类型错误 browser cookies 不是函数 我找不到有关此类错误的任何信息以及任何解决方案 describe someText function var httpBack
  • jQuery 按钮单击 jqGrid 刷新仅触发一次

    我有以下 jQuery 代码 用于填充 jqGrid 第一次单击按钮时 它可以完美地发布到我的 ASP NET MVC 页面 我的问题是 任何其他点击超过第一个点击按钮时似乎都会运行 jquery 代码 但它永远不会进入 POST 页面 有
  • 为什么 WPF 支持多重绑定,但 silverlight 不支持?

    多重绑定是 WPF 中非常强大的功能 为什么 silverlight 不支持它 他们从来没有抽出时间来增加支持吗 它太大而无法适应 NET 框架 它会出现在 Silverlight 5 中吗 有谁知道答案吗 Thanks 它不受开箱即用的支
  • 在子进程 Popen 和通信后关闭所有文件的正确方法

    我们在运行 python Twisted 应用程序的 Ubuntu Linux 机器上遇到了一些可怕的 打开文件过多 问题 在我们程序的许多地方 我们都使用子进程 Popen 如下所示 Popen ifconfig iface shell
  • 错误:项目上未安装 EntityFramework 包

    我刚刚安装了 SQL Server 2008 将 ASP NET MVC 4 项目配置为部署在本地 IIS 上 并添加了到当时创建的数据库的新连接 在 sql server 2008 中 当我尝试通过启用迁移 实体框架 时启用 迁移 Con
  • 如何在格子中标记面板

    这是一个简单的问题 您肯定已经遇到过 但让我很头疼 我有一个像这样的数据框 set seed 3 mydata lt data frame var rnorm 100 20 1 temp sin sort rep c 1 10 10 sub
  • 评估业务规则引擎的标准[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我们正在购买业务规则引擎
  • Jquery 选择元素 2 的位置进一步 - .next().next() 的另一种方式

    我正在寻找一种方法 如何选择一个 div 元素 该元素不是通过单击功能 选择 的元素的直接下一个元素 div siblings div div text div div div 现在我想选择 id 为 get this one 的一个 在我
  • Git 如何记录(或更可能表示)其 blob 的文件路径和名称,然后识别重命名?

    我正在尝试了解 git 设法 记住 文件名及其路径的方式 因为它只将文件内容存储在 blob 中 解释是在链接在这里Abizem 写的不错吗 这是迄今为止我见过的最好的 后续问题是 git 如何 在哪里 确定我们何时具有相似性 特别是在 移