有许多 git 命令,例如
git clone --depth 10 <repo>
,需要给出修订数量 [git help revisions
]。
提交和修订之间有什么区别(在 git 中,而不是说 svn)?
或者当尝试计算修订/提交时,它仅以复数形式显示,例如修订必须通过遍历提交及其父级的 DAG(有向无环图)或其他一些仔细的区别来计算?
请参阅 git rev-parse 的“指定修订版”:
修订参数
通常(但不一定)命名提交对象。<rev>
它使用所谓的扩展 SHA1 语法,[并包括]各种拼写对象名称的方法。
因此“修订版”指的是您可以用作引用 git 中的对象(通常是提交)的参数的 id。
HEAD@{5 minutes ago}
是引用 5 分钟前提交的修订。
gitrevision
提到:
例如,以下 rev 参数不引用提交:)也采用 revision 参数,这些参数表示除提交之外的其他对象,例如blob(“文件”)或trees(“文件目录”)。git show
<rev>:<path>, e.g. HEAD:README, :README, master:./README
后缀
:
后跟路径,用于命名树形对象中给定路径处的 blob 或树,该对象由冒号之前的部分命名。
对象”(例如,如git commit-tree
提交封装了:
所有父对象 ID
- 作者姓名、电子邮件和日期
- 提交者姓名和电子邮件以及提交时间。
--depth <n>
会:
创建一个浅克隆,其历史记录被截断为指定数量的它适用于在该深度可访问的所有提交,DAG 中每个路径最多修订。
n
修订。由于结果可能超过
n
次提交,因此术语“修订”在这里更适合,以强调您不仅仅需要
n
次提交,而是最多可访问
n
次修订引用的任何提交。但是,在这种情况下,修订显然仅引用可访问的提交(如下所示)(正如您在“
(浅克隆)比它所表明的更有用吗?”中提到的)。 问题是“可以从什么地方到达”?
您引用了
此线程,其中包括:
IIRC,
--depth=<n>
不是“加深<n>
”,而是“确保我至少从更新的提示中获得了<n>
”。如果您过去进行浅克隆方式并在另一方添加了比--depth
更多的提交后使用获取,那么浅克隆黑客会给您带来非常无用的(即使它可能内部一致)语义,因为您不能猜猜什么是正确的<n>
的值应该是在没有<n>
的情况下实际获取的。--depth
—gitglossary(7)(git 版本 2.47)
猜测