Git提交日期存储为Unix纪元时间戳,即以秒为单位。在重新定位时,多次提交会获得相同的时间戳。然后他们经常以错误的顺序出现在GitHub中(https://help.github.com/articles/why-are-my-commits-in-the-wrong-order/)。
我希望rebase
命令的别名在每次提交之间等待一秒钟。理想情况下,它也支持--interactive
模式。
答案 0 :(得分:1)
没有内置方法可以执行此操作,但如果您使用的是其中git rebase
仍然是一系列shell脚本的Git版本,则可以修改脚本。现在git rebase
主要在C中,修改源以在提交之间添加延迟要困难得多。但是您仍然可以使用旧的shell脚本(请注意有几个),例如将它们复制到您自己的名为old-rebase
的脚本中并将其修改为运行old-rebase--am
和old-rebase--interactive
,然后运行git old-rebase
将他们解雇。
无论如何,它比你提出的要复杂得多。每个提交都有两个时间戳:" author"时间戳和"提交者"时间戳。要查看两者,例如运行git log --pretty=fuller
(还有其他方法可以查看两者,但这是开始的方法)。
当您运行git rebase
(非交互式)时,Git通常 1 会保留作者信息:名称,电子邮件地址,和作者时间戳。 --committer-date-is-author-date
标志将提交者日期设置为与保留的作者日期相同的时间戳,而不是将其设置为"现在"。 --ignore-date
标志将作者日期设置为提交者日期(即"现在")。 Git总会让你成为提交者。
当您运行git rebase --interactive
时,Git会使用git cherry-pick
来实现每个pick
命令。这没有控制旋钮:它保留作者信息并使你成为提交者,因此作者日期是原始作者日期,提交者日期是"现在"。
在查看提交时,它由查看者(git log
或其他)以某种顺序呈现提交。由于两个日期 - 作者和提交者 - 可以在这里做出选择。 GitHub似乎在拉取请求提交列表排序中使用作者日期,因此提交者日期在一秒之内的事实实际上并不相关。
1 我说"一般"这里因为有很多极端情况,尤其是交互式代码和拆分或组合提交。请注意,git rebase -p
以非交互方式使用交互式代码,因此不支持--committer-date-is-author-date
。