繁体   English   中英

git 修订版中的“阶段号”究竟是什么

[英]What exactly is the "stage number" in git revisions

在 git修订文档中它说:

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

对我来说,这并没有说明阶段编号:0、:1、:2 和:3 的含义。 当合并完成时,文档提到了这种情况。 但它没有提到当没有进行合并时它们的含义。

尝试一下,在我看来“:0”是当前暂存的索引。 那是对的吗?

  • 合并进行时“:0”等的含义是否会发生变化?
  • 当前没有进行合并时,该数字是什么意思?

这些数字代表索引/暂存区域中的“插槽”。 有两种情况需要区分:

合并冲突

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

同时, :1:是这个文件在 LCA (merge-base) 中的 state, :2:ours的版本, :3:theirs版本。

因此,假设您知道什么是合并,您可以由此得出结论,Git 尝试同时应用 diff :1: - :2:和 diff :1: - :3: to :1:以形成新文件go 进入合并提交,并且在没有人工协助的情况下无法完成(因此“冲突”)。

否则

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM