git 修订版中的"stage number"究竟是什么



在git修订文档中,它说:

[:],例如:0:README,:README冒号(可选地后跟阶段号(0到3(,冒号后跟路径,在给定路径的索引中命名blob对象。缺少的阶段编号(及其后面的冒号(命名阶段0条目。在合并期间,阶段1是公共祖先,阶段2是目标分支的版本(通常是当前分支(,阶段3是来自正在合并的分支的版本。

对我来说,这并不能说明阶段号:0、:1、:2和:3的含义。文档中提到了在进行合并时的情况。但它并没有提到在没有进行合并的情况下它们意味着什么。

尝试一下,在我看来":0";是当前暂存的索引。这是正确的吗?

  • 做":0";等等。在合并进行时更改
  • 当前没有进行合并时,这个数字意味着什么

这些数字全部表示";槽";在索引/暂存区域中。有两种情况需要区分:

合并冲突

当在合并冲突期间暂停时,当Git为您重写冲突文件时,如果您询问冲突文件,:0:为空;这就是为什么,在编辑工作树版本后,必须add它,才能将固定版本获取到索引中,以便它进入合并提交。

同时:

  • :1:是LCA(合并库(中此文件的状态
  • :2:ours版本
  • :3:theirs版本

因此,假设您知道什么是合并,您可以从中得出结论,Git试图将diff:1:-:2:和diff:1:-:3:应用到:1:来形成新文件以进入合并提交,并且在没有人工帮助的情况下无法完成(因此产生了"冲突"(。

否则

否则,:0:是文件的索引版本,其他都为空(尝试获取一个会导致错误消息(。

最新更新