gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 12:51:27 25 4
gpt4 key购买 nike

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

后续问题是,git 如何(在何处)确定我们何时具有相似性,尤其是在“移动”或路径名更新之后? (根据我的 Q sub-directory renames )。我需要能够维护一个现有的工作流,该工作流使用路径重命名作为低级个人 VCS 的一部分(我们有一个用于大版本的大型铁 VCS,但没有任何日常/小时使用)

最佳答案

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

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

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

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

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

因此,当您重命名文件并提交它时,将创建一个新的树对象(好吧,如果它在子目录中,则创建多个)并使用新的对象映射名称,但对象是相同的。

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

编辑:查看 Git 社区手册,其中有一个 really good explanation关于 git 如何存储信息。

关于git - Git 如何记录(或更可能地表示)其 blob 的文件路径和名称,然后识别重命名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5917738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com