Git rebase别名,每次提交之间有一秒钟的延迟

时间:2017-09-22 12:10:11

标签: git github

Git提交日期存储为Unix纪元时间戳,即以秒为单位。在重新定位时,多次提交会获得相同的时间戳。然后他们经常以错误的顺序出现在GitHub中(https://help.github.com/articles/why-are-my-commits-in-the-wrong-order/)。

我希望rebase命令的别名在每次提交之间等待一秒钟。理想情况下,它也支持--interactive模式。

1 个答案:

答案 0 :(得分:1)

没有内置方法可以执行此操作,但如果您使用的是其中git rebase仍然是一系列shell脚本的Git版本,则可以修改脚本。现在git rebase主要在C中,修改源以在提交之间添加延迟要困难得多。但是您仍然可以使用旧的shell脚本(请注意有几个),例如将它们复制到您自己的名为old-rebase的脚本中并将其修改为运行old-rebase--amold-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