gpt4 book ai didi

git - 提交的作者应该与历史重写(Git)上的作者日期有什么关系?

转载 作者:太空狗 更新时间:2023-10-29 14:10:08 35 4
gpt4 key购买 nike

我看到了很多关于如何在重新调整和/或挤压时处理作者日期和提交者日期的问题,但我还不明白原因。
很明显,无论另一个人是否代表其作者应用提交,提交者信息都会有所区别(实际上,此人没有重写任何内容)。在将本地(自己的)分支推送到远程存储库之前重写它的历史记录怎么样?
作者有几个选择:
修改作者日期以匹配提交者日期。
修改提交日期以使其与作者日期相同。
什么都不做。
考虑一下这样的事情:

显然,默认的回扣将使回扣提交中的两个日期出现差异(并且前面的提交可以有更早的作者日期!)。挤压将创建一个全新的提交。我不在乎保持漂亮,但是,这有意义吗?在这种情况下,两个日期的语义是什么?
提前谢谢。
更新:
关于“语义”,我主要指的是“传达的意图”。我希望不同的工具在任何情况下都能有不同的表现,但是其他git用户对这两个日期有什么期望呢?

最佳答案

git本身没有日期的语义。嗯,几乎没有。所以这真的取决于你。大多数情况下,git只显示提交,并且作者日期可见。如果您使用git log --pretty=fuller,它将显示提交,并且两组日期都可见,仅此而已。
每当git在其肮脏的突起中有多个commit时,就会发生此规则的一个异常。git log命令一次只能显示一个提交,但由于某种原因,并以某种方式告诉它显示两个或多个提交。例如,假设您拥有:

       C--D   <-- br1
/
...--B
\
E--F <-- br2

然后运行 git log br1 br2git log --all。您刚刚告诉git:show me commits DF,然后继续从那里向后工作以显示以前的提交。Git现在应该显示哪个, DF?它有两个选择。
git在这一点上默认做的是选择提交日期较晚的一个。这有点不幸,因为它默认显示的日期是作者日期。但你想怎么做就怎么做。
git log命令有许多选项可以更改它首先选择显示的 DF选项。其中包括 --author-date-order--topo-order
一旦git显示 DF,它就会将 CE放入列表中。也就是说,它把它显示的那个人的父母放入列表中。现在列表显示要么 C F要么 D E。和以前一样,它会根据你告诉它使用的规则集选择一个并显示出来。 CD的父级是 B所以如果它只是显示了其中的一个,那么现在 B在列表中。这种情况会反复出现,直到列表缩小到只有一个条目,而这往往会很快发生,因为规则倾向于在返回到 C-D之前完成 E-FB链。此外,一些规则,比如 --topo-order,告诉git必须实现这一点,即使 B上的日期很奇怪。
如果您发现git以奇怪的顺序列出了一些东西,请使用 git log --graph(也可以使用 --oneline)。 --graph选项告诉 git log两件事:
绘制提交日志的粗略的基于ascii的文本图。它的方向是垂直的,而不是像我通常在stackoverflow帖子中所做的那样水平的,但是对于简单的ish图或图片段来说,这很好。
进行图形漫游时使用 --topo-order。也就是说,一旦git从 C-D腿开始,它将在开始 E-F腿之前完成该腿。
(您可以用 --topo-order--date-order覆盖隐含的 --author-date-order
在合并时经常会看到这种非线性行为
注意,不管提交日期顺序如何,如果git只有一个提交,比如说,git从 git log br1开始,它只显示一个提交。这会清空要显示的提交列表,然后将 D的父级放入列表中。列表现在列出 D,因此git显示 C,它清空列表,但将 C放入列表。现在git显示 B,它清空列表,但将 B的父级放入,依此类推。结果是简单的,线性的,向后走。因此,如果没有合并提交,并且在分支的末尾启动git,则只会看到分支:
...--o--o--o--tip   <-- branch

但如果有合并提交:
          C--D
/ \
...--o--o G--o--...--tip <-- branch
\ /
E--F

然后当git显示 B时,它将 GD都放入其列表中。现在,在列表的情况下,您处于两个提交中,并且您将进入一个问题,即首先显示哪个提交,就像使用 F一样。
如果使用 git log --all强制git不跟随合并的另一个分支,则这将完全消失。有时候这是好事,有时候不是。如果使用 --first-parent让git绘制一个图,有时会有帮助,有时会使图变得非常复杂。
GITHUB有时令人讨厌。
虽然这与git无关,但这里值得一提的是,一旦github开始在pull请求中显示提交,github就开始用提交顺序做自己的事情。它停止使用所有正常的git规则,并开始使用github规则。这些规则对github用户来说是有意义的,但对github的许多用户来说就没那么重要了。你得和这里的github人谈谈。

关于git - 提交的作者应该与历史重写(Git)上的作者日期有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55065979/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com