【问题标题】:What is the term for the data-structure in git that will be updated should I commit?如果我提交,git 中将更新的数据结构的术语是什么?
【发布时间】:2016-10-16 13:12:10
【问题描述】:

Git 有以下几个概念:

  • HEAD 指针(指向当前分支顶部提交的指针)
  • 索引(更改的暂存区)
  • 工作目录(本地文件系统)

但是,如果我提交一些更改,git 中将更新的数据结构的术语是什么?

【问题讨论】:

标签: git


【解决方案1】:

一旦您提交,HEAD 将指向您所做的新提交,其中将包含您索引的树内容。

Pro Git, in the Reset Demystified section 中提供了这一切的精彩概要

HEAD 是一个符号引用——也就是说,一个(通常)指向另一个引用的引用。分支是 ref 的一种,如果您在签出该分支时提交,您的分支将被更新。但是,您可以检查除分支(标签和按 id 的普通提交)以外的其他内容,但是您将拥有一个“分离的HEAD”。当您提交时,HEAD 仍会更改,但如果您切换离开,您可能会丢失这些提交。

总而言之,您提交时唯一可以保证更新的是符号引用HEAD可能是您当前的分支,即ref .所有其他数据结构都是重新创建的。

【讨论】:

  • 是的,但是提交更新的数据结构的名称是什么?
  • @BenAston 我的答案已更新——您可能正在寻找ref
  • 有帮助,谢谢。 IIUC reflog 包含对分支、标签等的引用。因此,当我提交时,与我当前分支关联的 HEAD ref 被更新。但是“git数据库”也必须用ref的目标更新吗?大概 ref 指向一个 SHA 哈希,它是这个“数据库”的索引。我使用“git 数据库”代替我正在寻找的术语。
  • 由 SHA 哈希标识的提交由树和相关元数据组成。树也由 SHA 哈希标识并包含对其他树和 blob(文件)的引用。任何“签入”到 git 的东西都会给出一个 SHA 引用——参见 Pro Git 的 Git ObjectsGit References
  • 谢谢。这些树所在的位置的名称是什么? “git 文件系统”(基于您的一个链接)?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-20
  • 1970-01-01
  • 2019-07-17
  • 1970-01-01
  • 1970-01-01
  • 2020-11-22
相关资源
最近更新 更多