【问题标题】:why git commits are not in range between date of their tags为什么 git 提交不在其标签日期之间的范围内
【发布时间】:2018-03-05 18:01:30
【问题描述】:

当我将git log --pretty=oneline 2.0.7..2.1 -- wp-includes/functions.php 作为两个标签(版本)之间的示例时, 我发现他们之间实现了许多提交 106 个提交。 但是当我看到 2007-01-15 20:51:28 +0000 发布的 version1: 2.0.7 和 2007-01-23 02 发布的 version2: 2.1 时很奇怪:23:20 +0000。 我发现的提交在 2006-02-09 10:03:48 +00002007-01-16 18:41:05 +0000

之间

谁能解释一下这个现象?

【问题讨论】:

  • Woodln 不知道,但合并提交/樱桃采摘是否有可能将先前的提交应用于已经存在的 - 和最近的 - 分支,连同其原始日期?也在等待答案,有趣的问题
  • 这是一个完全的猜测:但我要说在2006-02-09 上添加了一个提交,它没有合并到你所在的任何分支(我假设master)直到在2.0.7 之后。即,有人在最终合并之前“工作”了 11 个月的功能分支,因此它会显示在您的 git log
  • 我也看到其他版本,2.0.6 发布于 2007-01-06 04:24:41 +0000,2.0.5 发布于 2006-10-27 22:42:01 +0000, 2.0.4 于 2006-07-29 02:25:19 发布 +0000, 2.0.3 于 2006-06-02 17:44:49 发布 +0000, 2.0.2 于 2006-06-02 17 发布:43:25 +0000, 2.0.1 发布于 2006-02-01 22:11:17 +0000 和 2.0 发布于 2005-12-26 21:35:22 +0000。我使用的存储库是 Wordpress
  • 我验证了它们,它们都在同一个分支上,所以我认为你的观点不适用于这里:/。它仍然没有响应......

标签: git date version commit release


【解决方案1】:

首先,每个提交都有两个时间戳:作者时间戳和提交者时间戳。通常这两个是相同的,但这不是必需的。使用git log --pretty=fuller 来查看两者。

其次,这些时间戳实际上是任意的(在某个范围内:它们仅限于 Git 可以在内部表示的值)。它们默认为您创建提交时在您的计算机上设置的任何内容,但是您的计算机时钟可能会关闭,也许会很疯狂,并且任何人都可以告诉 Git 设置一些特定的时间,而不是时钟时间。

最后,X..Y 符号表示之间。请参阅我对您上一个问题的回答,How to find commit responsible by adding a file index (blob)。密切注意各种可能的图形形状,并考虑X..Y 真正意味着Y ^X:包括从提交Y 可到达的任何提交,包括Y 本身,同时排除从X 可到达的所有提交,包括@ 987654330@自己。

【讨论】:

【解决方案2】:

我发现你是对的 Philip Pittle,我发现有一个如图所示创建的分支。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-23
    相关资源
    最近更新 更多