Git:父提交比子提交年轻?

5
我在浏览http://arago-project.org/git/projects/linux-omap3.git仓库时,发现一个奇怪的日期问题,即父提交的日期比其子提交晚一年。 这怎么可能呢?
user@ubuntu1004:/f/linux-omap3$ git log -2 --parents  4b8db3b
commit 4b8db3b368f5601717e3ffee0051628ba33172d3 3c0eee3fe6a3a1c745379547c7e7c904aa64f6d5
Author: Kevin Hilman <khilman@deeprootsystems.com>
Date:   Fri Aug 20 11:19:52 2010 -0700

    OMAP: bus-level PM: enable use of runtime PM API for suspend/resume

    [...skipped...]

    Cc: Rajendra Nayak <rnayak@ti.com>
    Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>

commit 3c0eee3fe6a3a1c745379547c7e7c904aa64f6d5 65f42886e24be2197b1263f138eabf40c6774d00
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Tue Jan 4 16:50:19 2011 -0800

    Linux 2.6.37

2
提交者可以输入任何时间戳,对吗?如果有人运行的系统时钟设置不正确,那么就会发生这种情况。 - Thilo
1
“rebased”提交的时间戳会发生什么?它们是否保留原始日期?如果是这样,那么也可能会发生这种情况。 - Thilo
@Thilo 我相信他们会保留原始时间戳。 - Roman
4
每个提交还存储着两个独立的日期——作者日期和提交者日期。这两个日期有许多不同的原因可能会不同,比如rebase、cherry-pick、format-patch/am循环等。 - twalberg
2个回答

5

如评论中所述:

你看到的可能是以下情况之一:


1
另一种经常发生的方式是“cherry-pick”,它也保留时间戳。 - Michael Anderson

2
接受的答案更具技术洞察力,但我会补充一下这是如何发生的。我在调试一个受本地计算机日期影响的问题时,不断改变系统时间来跟踪错误。修复后,我提交了所有内容到git,没有意识到我的系统时钟仍然设置在未来的2个月,从而搞乱了我的git历史记录,因为几天后提交显示在Github上出现了顺序错误(d'oh!)。据说这是可以修复的,尽管我还没有尝试过。

是的,在那种情况下,filter-branch 是解决方案。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接