首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Git获取两个日期之间发生的所有提交之间的差异?

如何使用Git获取两个日期之间发生的所有提交之间的差异?
EN

Stack Overflow用户
提问于 2009-07-21 20:35:14
回答 7查看 80.4K关注 0票数 123

或者只是发生在两个日期之间的所有提交?在SVN中,您可以这样做

代码语言:javascript
复制
svn diff -r{date}:{date}

去做吧!我似乎找不到与此相当的Git。

具体地说,我正在考虑编写一个脚本,以便每天发送电子邮件,其中包含当天提交的所有代码以及提交人。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-07-21 20:40:54

您可以使用git whatchanged --since="1 day ago" -p

它还需要一个--until参数。

Docs

票数 175
EN

Stack Overflow用户

发布于 2009-07-21 20:58:35

"date“在git中是一个有点松散的概念。提交将有一个作者日期,这可能是在某人实际将提交拉入/提交到其存储库之前的一段时间,而且提交可能会被重新定位并更新为位于明显较新的提交之上。

提交还有一个提交日期,如果以任何方式改变提交基数或修改提交,提交日期都会更新。这些提交更可能是按某种时间顺序进行的,但您仍然受制于提交者在其计算机上设置了正确的时间,即使如此,未修改的提交在合并到中央存储库的主分支之前,可以无限期地位于远程存储库的功能分支上。

对于您的目的来说,最有用的可能是特定存储库上的reflog日期。如果您启用了每个分支的reflog(请参阅git config core.logAllRefUpdates),那么您可以使用ref@{date}语法来引用分支在特定时间的位置。

例如。

代码语言:javascript
复制
git log -p master@{2009-07-01}..master@{now}

您还可以使用‘模糊’描述,如:

代码语言:javascript
复制
git log -p "master@{1 month ago}..master@{yesterday}"

这些命令将显示在给定的存储库分支中“出现”的所有提交,而不管它们根据其作者和提交日期实际有多“旧”。

请注意,每个分支的reflog是特定于存储库的,所以如果您在克隆上运行log命令,并且您没有拉取(比方说)一个月,然后一次拉取上个月的所有更改,那么上个月的所有更改都将出现在一个@{1 hour ago}..@{now}范围内。如果您能够在人们推送到的“中心”repostory上运行log命令,那么它可能会执行您想要的操作。

票数 24
EN

Stack Overflow用户

发布于 2013-11-24 12:37:51

代码语言:javascript
复制
git diff --stat @{2013-11-01}..@{2013-11-30}

代码语言:javascript
复制
git diff --stat @{2.weeks.ago}..@{last.week}
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1161609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档