“ 7天前创作了什么?在14小时前提交”是指在GitHub上吗?


21

我在这个GitHub仓库上看到了这个:

在此处输入图片说明

这是什么意思?怎样才能“在7天前创作”而又在“ 14小时前提交”呢?


git可以测量他编辑的文件与他实际提交和推送的时间之间的时间戳吗?我没有看到这样的特征的使用,但还有点儿措辞意味着什么..
赛斯

@Seth我一开始就是这么想的,但是我什至从未听说过Git用时间戳做任何事情。
2014年

@Seth Git忽略文件时间戳。提交者可以使用即时更改作者时间戳commit --date=。Schwern很好地解释了这一点。
ADTC 2014年

@Undo我希望您不要将“ 14小时前”与“ 14天前”混淆。...现在确实很奇怪,要提交一些似乎直到7天后才编写的东西……我我不确定Git是否阻止将作者时间戳设置为大于提交者时间戳;它可能不在乎。
ADTC

Answers:


21

Git有一个单独的概念,即作者(编写代码的人)和提交者(将代码提交到存储库的人)。同样,两者的日期也可能不同。它们通常是相同的。

如果主要是编写代码或提交补丁的人员不像使用邮件列表提交补丁的项目那样具有对存储库的推送访问权限,则您希望它们有所不同。在这种情况下,具有推送访问权限的人员将应用补丁并git commit--author--date开关一起运行或者使用GIT_AUTHOR_NAME,GIT_AUTHOR_EMAIL和GIT_AUTHOR_DATE环境变量(在git-commit-tree中记录)运行

另一种情况是使用git cherry-pick或git rebase。提交者是执行“樱桃精选”的人,而作者是原始提交的作者。Git将为您设置作者身份和日期。

您可以使用来在存储库中查看此信息git log --pretty=fuller

commit 21550561941b078ea1862b882ec89f26696ff5bb (HEAD, origin/master, origin/HEAD, master)
Author:     thiagopnts <thiagopnts@gmail.com>
AuthorDate: Tue Nov 18 14:52:49 2014 -0200
Commit:     Thiago Pontes <email@thiago.me>
CommitDate: Tue Nov 25 09:46:58 2014 -0200

    open repository url if confirmed, closes #1

1
git rebase也会导致提交日期被更新,而作者日期保持不变。
cjm 2014年

@cjm你说得对!在这方面,rebase和cherry-pick的行为相同。这是有道理的,可以将一个rebase视为多个“樱桃”。
Schwern 2014年

1
为了从邮件中应用补丁,还有git am,它会自动从邮件中获取日期和作者。
2014年

6

这看起来像是Git如何处理日期以及如何通过GitHub的close关键字引用它的混合体。

Git在提交和作者日期之间进行分隔。在Pro Git中, 它们会有所不同

作者是最初撰写该作品的人,而提交者是最后应用该作品的人。因此,如果您向项目发送补丁程序,并且其中一个核心成员应用了该补丁程序,那么你们俩都将获得荣誉-您作为作者,而核心成员作为提交者。

因此,虽然代码本身是在“ 7天前”(本地)提交/编写的,但直到“ 14小时前”才被“应用”或修补到该代码,因为直到引用关闭后,它才能在远程中看到信息。


2
虽然我还没有测试过,但我不相信作者信息是由Github封闭关键字添加的。提交者和作者的身份以及日期都包含在提交ID中。如果Github更改了其中任何一个,它将更改远程端的提交ID。远程存储库和本地存储库将有所不同。作者将无法不加强制就推或拉。
Schwern 2014年

2
提交与推送到远程不同。请记住,Git中的几乎所有内容都可以在本地完成,包括提交。您可以先提交(提供两个时间戳),然后再推送(仅将提交上传到远程,但不提供任何时间戳)。没有“推送时间戳”,因为知道何时推送提交并不重要-可以(并且经常)推送和拉取任意次。
ADTC 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.